283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
|
return YES;
return NO;
}
+ (IMP)instanceMethodForSelector: (SEL)selector
{
#if defined(OF_OBJFW_RUNTIME)
return objc_get_instance_method(self, selector);
#else
return class_getMethodImplementation(self, selector);
#endif
}
+ (const char*)typeEncodingForInstanceSelector: (SEL)selector
{
#if defined(OF_OBJFW_RUNTIME)
const char *ret;
|
<
<
<
<
|
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
|
return YES;
return NO;
}
+ (IMP)instanceMethodForSelector: (SEL)selector
{
return class_getMethodImplementation(self, selector);
}
+ (const char*)typeEncodingForInstanceSelector: (SEL)selector
{
#if defined(OF_OBJFW_RUNTIME)
const char *ret;
|
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
|
- (BOOL)conformsToProtocol: (Protocol*)protocol
{
return [isa conformsToProtocol: protocol];
}
- (IMP)methodForSelector: (SEL)selector
{
#if defined(OF_OBJFW_RUNTIME)
return objc_msg_lookup(self, selector);
#else
return class_getMethodImplementation(isa, selector);
#endif
}
- (id)performSelector: (SEL)selector
{
id (*imp)(id, SEL) = (id(*)(id, SEL))[self methodForSelector: selector];
return imp(self, selector);
|
<
<
<
<
|
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
|
- (BOOL)conformsToProtocol: (Protocol*)protocol
{
return [isa conformsToProtocol: protocol];
}
- (IMP)methodForSelector: (SEL)selector
{
return class_getMethodImplementation(isa, selector);
}
- (id)performSelector: (SEL)selector
{
id (*imp)(id, SEL) = (id(*)(id, SEL))[self methodForSelector: selector];
return imp(self, selector);
|