OC SEL型別的使用

2021-08-28 04:07:12 字數 1665 閱讀 7206

一.sel型別的第乙個作用, 配合物件/類來檢查物件/類中有沒有實現某乙個方法

sel sel = @selector(setage:);

class *p = [class new];

判斷p物件中有沒有實現-號開頭的setage:方法

如果p物件實現了setage:方法那麼就會返回yes

如果p物件沒有實現setage:方法那麼就會返回no

bool flag = [p respondstoselector:sel];

nslog(@"flag = %i", flag);

a. respondstoselector注意點:

1. 如果是通過乙個物件來呼叫該方法那麼會判斷該物件有沒有實現-號開頭的方法

2. 如果是通過類來呼叫該方法, 那麼會判斷該類有沒有實現+號開頭的方法

sel sel = @selector(test);

flag = [p respondstoselector:sel];

nslog(@"flag = %i", flag);

flag = [class respondstoselector:sel];

nslog(@"flag = %i", flag);

二. sel型別的第二個作用, 配合物件/類來呼叫某乙個sel方法

sel sel = @selector(test);

class *p = [class new];

呼叫p物件中sel型別對應的方法

[p performselector:sel];

sel sel = @selector(signalwithnumber:);

withobject: 需要傳遞的引數

a.注意:

如果通過performselector呼叫有引數的方法, 那麼引數必須是物件型別,

也就是說方法的形參必須接受的是乙個物件, 因為withobject只能傳遞乙個物件

[p performselector:sel withobject:@"***xx"];

sel sel2 = @selector(setage:);

[p performselector:sel withobject:@"***xx"];

nslog(@"age = %i", p.age);

b.注意:performselector最多只能傳遞2個引數

sel sel = @selector(sendmessagewithnumber:andcontent:);

[p performselector:sel withobject:@"***xx" withobject:@"***xx"];

三. 配合物件將sel型別作為方法的形參

class *c = [class new];

sel sel = @selector(test);

classtwo *p = [classtwo new];

[p makeobject:c andsel:sel];

Lua Table型別的使用

關係表型別,這是乙個很強大的型別。我們可以把這個型別看做是乙個陣列。只是c語言的陣列,只能用正整數來做索引 在lua中,你可以用任意型別來作陣列的索引,除了nil。同樣,在c語言中,陣列的內容只允許一種型別 在lua中,你也可以用任意型別的值來作陣列的內容,除了nil table的定義很簡單,它的主...

列舉型別的使用

1.列舉的定義列舉型別定義的一般形式為 enum 列舉名 在列舉值表中應羅列出所有可用值。這些值也稱為列舉元素。例如 該列舉名為weekday,列舉值共有7個,即一周中的七天。凡被說明為weekday型別變數的取值只能是七天中的某一天。2.列舉變數的說明 如同結構和聯合一樣,列舉變數也可用不同的方式...

列舉型別的使用

列舉型別的使用 列舉型別對學過程式設計的人而言可謂是既熟悉又陌生,各種語言的教材上都有對列舉型別的介紹,但是真正用過的人可能不多。我也是因為工作之後才接觸到列舉型別的使用,這時候才知道自己一直對列舉型別都是一知半解,今天通過查閱資料加深了對列舉型別的了解,現將其記錄如下。1.什麼是列舉型別 enum...