63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
-
+
-
-
+
+
-
+
-
+
|
for (struct objc_protocol_list *protocolList = class->protocols;
protocolList != NULL; protocolList = protocolList->next)
for (long i = 0; i < protocolList->count; i++)
if (protocol_conformsToProtocol(protocolList->list[i],
protocol))
return true;
objc_global_mutex_lock();
objc_globalMutex_lock();
if ((categories = objc_categories_for_class(class)) == NULL) {
objc_global_mutex_unlock();
if ((categories = objc_categoriesForClass(class)) == NULL) {
objc_globalMutex_unlock();
return false;
}
for (long i = 0; categories[i] != NULL; i++) {
for (struct objc_protocol_list *protocolList =
categories[i]->protocols; protocolList != NULL;
protocolList = protocolList->next) {
for (long j = 0; j < protocolList->count; j++) {
if (protocol_conformsToProtocol(
protocolList->list[j], protocol)) {
objc_global_mutex_unlock();
objc_globalMutex_unlock();
return true;
}
}
}
}
objc_global_mutex_unlock();
objc_globalMutex_unlock();
return false;
}
|