我是XCode的新手。我想知道我怎麼知道所有的類都符合XCode 4.3.1中的特定協議? 我怎樣才能知道一個類的所有子類?如何獲得所有類的列表符合XCode 4中的特定協議?
9
A
回答
14
使用Objective-C runtime functions。
objc_getClassList
得到的Class
ESclass_getSuperclass
或-superclass
方法列表走超鏈class_conformsToProtocol
或-conformsToProtocol:
方法來檢查,如果一個類遵循的協議
7
Protocol *protocol = @protocol(YourProtocol);
int numberOfClasses = objc_getClassList(NULL, 0);
Class *classList = malloc(numberOfClasses * sizeof(Class));
numberOfClasses = objc_getClassList(classList, numberOfClasses);
for (int idx = 0; idx < numberOfClasses; idx++)
{
Class class = classList[idx];
if (class_getClassMethod(class, @selector(conformsToProtocol:)) && [class conformsToProtocol:protocol])
{
NSLog(@"%@", NSStringFromClass(class));
}
}
free(classList);
相關問題
- 1. 如何指定一個符合類的協議在夫特
- 2. 符合目的-C協議夫特類
- 3. 如何使所有的子類符合協議?
- 4. 如何獲得在指定類中混合的特徵列表?
- 5. 如何獲得給定包中的所有類的列表
- 6. 在符合協議的所有類上實現一個類別
- 7. 夫特2.2陣列符合協議
- 8. 不符合協議斯威夫特父類 - 目標C協議
- 9. 如何獲得符合特定條件的列表項數目?
- 10. 如何獲取列表中特定類型的所有對象?
- 11. 如何確定類在swift中符合的協議?
- 12. 符合其他協議綁定協議
- 13. 斯威夫特協議如何才能符合類型參數協議
- 14. 類型'AppDelegate'不符合協議'CLLocationManagerDelegate' - Xcode 6中的Swift
- 15. 如何獲得特定表的所有列ucanaccess
- 16. 類型不符合協議序列類型 - 斯威夫特
- 17. 申報元類型是子類,並且符合的協議在夫特4
- 18. 類型'customDataObject'不符合協議'序列'
- 19. Qt:如何獲得特定類的兒童的所有類
- 20. 類不符合協議RequestRetrier
- 21. 類別符合協議
- 22. 類不符合協議
- 23. 如果元素符合給定的協議,擴展數組以符合協議
- 24. 符合協議的變量接受符合協議的變量
- 25. 符合協議?
- 26. 如何獲得所有subdomins列表特定網站
- 27. 如何獲得具有特定類的表中的第n行
- 28. 符合多種協議的Casting類型作爲單個協議
- 29. 符合一個協議協議相關聯的類型
- 30. 我可以聲明一個符合Swift協議的特定類的類型嗎?
fwiw,'class_conformsToProtocol'比'-conformsToProtocol'快。這是一個大型應用程序中的瓶頸,數以千計的類 – 2013-03-27 10:03:06