Object C函數指針@selector

其做用至關於函數指針,如今我看到的大多說用法都是在調用某些函數須要傳遞一個 函數指針 參數時,使用@selector。它會在當前類裏面查找selector後面所跟的函數,返回一個SEL類型的值。函數

 SEL變量的執行.用performSelecor方法來執行.spa

[對象 performSelector:SEL變量 withObject:參數1 withObject:參數2];指針

在調用respondsToSelector:@selector(method)時,這個method只有在該方法存在參數時須要 ":",若是該方法不須要參數就不須要加這個冒號。不然,編譯不會報錯,只是執行返回的值不對。固然若是方法有多個參數,須要多個冒號,參數有名稱的須要帶上參數名稱。orm

如:有以下方法:對象

-(NSString*)toXmlString;blog

此時調用相似於:get

[self respondsToSelector:@selector(toXmlString)]博客

若是toXmlString方法的定義爲:it

-(NSString*)toXmlString:(NSString*)prefix;編譯

那麼調用就必須加上冒號,如:[self respondsToSelector:@selector(toXmlString:)]

  • -(BOOL) isKindOfClass: classObj 用來判斷是不是某個類或其子類的實例
  • -(BOOL) isMemberOfClass: classObj 用來判斷是不是某個類的實例
  • -(BOOL) respondsToSelector: selector 用來判斷是否有以某個名字命名的方法(被封裝在一個selector的對象裏傳遞)
  • +(BOOL) instancesRespondToSelector: selector 用來判斷實例是否有以某個名字命名的方法. 和上面一個不一樣之處在於, 前面這個方法能夠用在實例和類上,而此方法只能用在類上.
  • -(id) performSelector: selector 執行某個方法

 

本文出自 「人生得意須盡歡」 博客,請務必保留此出處http://no001.blog.51cto.com/1142339/643237

相關文章
相關標籤/搜索