@implementation A
-(void) objMethod1{
[self objMethod2]; // 1. self在对象方法中
}
-(void) objMethod2{
...
}
+(void) clzMethod1{
[self clzMethod2] // 2. self在类方法中
}
+(void) clzMethod2{
...
A a1, a2 = ...
[a1 objMethod1];
// a1调用了objMethod1这个对象方法,所以
// 1.那个地方的self代表a1这个对象
===假设B跟A有亲戚关系==
[B clzMethod1]
// B这个类调用了 clzMethod1这个类方法,所以
// 2.这个地方的self就代表B这个类
如果self在对象方法中,那这个self就代表 调用含有self的当前这个对象方法的 那个对象
如果self在类方法中,那这个self就代表 调用含有self的当前这个类方法的 那个类
self用于
对象方法之间相互调用,或者类方法之间相互调用
自己调用自己会死循环 , @property的getter和setter方法 用 return self.xxx 就相当于 是在[self getXXX]这样就会一直递归调用了。。好像是这样,反正尽量别用self.xxx吧,是不是?