4
A
回答
5
你可以得到與protocol_copyMethodDescriptionList
的協議,它返回一個指向objc_method_description
結構聲明的所有方法。
objc_method_description
在objc/runtime.h
定義:
struct objc_method_description {
SEL name; /**< The name of the method */
char *types; /**< The types of the method arguments */
};
要找出是否要選擇一類響應的情況下使用instancesRespondToSelector:
具有這樣的功能離開你:
BOOL ClassImplementsAllMethodsInProtocol(Class class, Protocol *protocol) {
unsigned int count;
struct objc_method_description *methodDescriptions = protocol_copyMethodDescriptionList(protocol, NO, YES, &count);
BOOL implementsAll = YES;
for (unsigned int i = 0; i<count; i++) {
if (![class instancesRespondToSelector:methodDescriptions[i].name]) {
implementsAll = NO;
break;
}
}
free(methodDescriptions);
return implementsAll;
}
相關問題
- 1. 如何檢查協議是否實現?
- 2. 如何檢查記錄是否實現了特定的協議?
- 3. 檢查一個類型是否實現協議
- 4. Swift類「不實現(objc)協議」
- 5. 在主類的單獨.m文件中實現objc協議方法?
- 6. 在符合協議的所有類上實現一個類別
- 7. 如何檢測對象是否在Objective-C中實現了NSFastEnumeration協議?
- 8. 爲什麼我的ObjC實現類#import實現協議的_interface_?
- 9. 在ObjC中,我如何隱藏一個子類中超類方法的實現?
- 10. 如何檢查一個類是否實現NRefactory中的接口方法
- 11. 如何實現UIApplicationDelegate的協議方法?
- 12. 如何檢查是否實現了可選的重載方法?
- 13. iPhone - 如何知道協議方法是否已實現?
- 14. 每個方法一個類別與一個類別中的所有方法? (ObjC)
- 15. 如何判斷協議中的哪個方法未實現?
- 16. 檢查類是否符合協議
- 17. 如何在類實現中區分兩個協議的相同方法名稱?
- 18. 協議方法在類別中實現時無法識別
- 19. 通過在超類中聲明的方法實現協議?
- 20. 指定一個實現協議的類
- 21. 如何檢查是否一個類實現一個接口
- 22. 如何確定一個對象是否在Perl中實現了一個方法?
- 23. 檢查一個類是否已經在iOS中實例化了
- 24. 如何在協議中查找所需的方法?
- 25. 如何檢查一個java類是否有特定的方法?
- 26. 如何在另一個類中調用協議方法
- 27. 如何檢查類類型,看看它是否實現了一個接口
- 28. 在ObjC協議上的協議擴展
- 29. Objective-C - 如何隱藏實現協議的類的方法
- 30. 如何在Xcode中自動實現協議方法?
協議方法在缺省情況下是必需的,所以如果一個類採用給定的協議,它應該實現所有那些未標記爲「@option」的方法al'。 – Caleb
@NoahWitherspoon我不問如何檢查協議的一致性。我在問如何檢查實際協議中的方法是否全部實現。 – cgossain
也許通過一個爲協議的每種方法調用respondsToSelector的循環。並有協議的方法,請查看http://stackoverflow.com/questions/2094702/get-all-methods-of-an-objective-c-class-or-instance – Johnmph