一.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...