我想知道关于self
.
- 哪个上下文
self
在类方法中有变量? - 为什么
self.self
在方法中允许init
?
第一的:
我们有一堂课ExampleClass
@interface ExampleClass:NSObject
@property (nonatomic,strong) NSString* a;
+(ExampleClass*)createExampleClass;
@end
@implementation ExampleClass
-(id)init{
self = [super init];
if(self){
[self.self init]; #Allowed
[self init]; #Not Allowed ?
}
}
+(ExampleClass*)createExampleClass{
/*do work here*/
NSLog(@"Self: %@ \n Class: %@",self,[self class]);
}
@end
在此示例中,我们将看到如下内容:
Self: ExampleClass
Class: ExampleClass
但为什么?!
并且在init
方法中[self.self init]
允许,但不允许'[self init]'。
为什么会这样?