【发布时间】:2015-07-01 20:34:05
【问题描述】:
所以我在 NSObject 上有一个名为 CustomCategory 的类别,如下所示:
#import <Foundation/Foundation.h>
@interface NSObject (CustomCategory)
-(BOOL)doSomething;
@end
#import "NSObject+CustomCategory.h"
@implementation NSObject (CustomCategory)
-(BOOL)doSomething
{
NSLog(@"Done");
return NO;
}
@end
理想情况下,这将适用于这样的对象:
NSObject* object = [NSObject new];
[object doSomething];
但是,我发现它也可以这样工作,没有问题:
[NSObject doSomething];
所以我想知道,既然它是我通过类别添加的实例方法,为什么它也适用于类?
【问题讨论】:
-
显示Category的声明和定义代码。
-
工作意味着它可以编译或运行 doSomething 中的代码
-
所有的类也是 NSObjects(除了可能的 NSProxy)。
-
@user3125367差不多了。所有根类都是它们自己的类。所以从 NSObject 继承的每个类都是 NSObject,从 NSProxy 继承的每个类都是 NSProxy。
-
@zaph NSObject 并不特殊,它的处理方式与任何其他根类一样。
标签: objective-c