iOS NSClassFromString, NSSelectorFromString, isKingOfClass

1. NSClassFromString

  這個方法判斷類是否存在,如果存在就動態加載的,不存爲就返回一個空對象;

   id myObj = [[NSClassFromString(@"MySpecialClass") alloc] init];

  正常情況下等價於:

id myObj = [[MySpecialClass alloc] init];

      但是,如果你的程序中並不存在MySpecialClass這個類,下面的寫法會出錯,而上面的寫法只是返回一個空對象而已。

  優點:

弱化連接,因此並不會把沒有的Framework也link到程序中。

不需要使用import,因爲類是動態加載的,只要存在就可以加載。因此如果你的toolchain中沒有某個類的頭文件定義,而你確信這個類是可以用的,那麼也可以用這種方法。

 

2. NSSelectorFromString

  這個方法是上個方法的補充,也是動態加載實例方法。

  SEL sel = NSSelectorFromString(@"doSomethingMethod:")//注意這個冒號,說明方法帶有參數

  if([object respondsToSelector:sel]) { 

      [object performSelector:sel withObject:color]; //注意如果有兩個參數,使用兩個withObject:參數;

  }

3. isKindOfClass

  isKindOfClass 我們也可以使用isKindOfClass來檢查一個對象是否是一個類的成員


4. isMemberOfClass

  isMemberOfClass方法是來確定對象是否是某一個類的成員

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章