首先错误代码是这样的。
#import <Foundation/Foundation.h>
@interface Test : NSObject
{
int number;
}
-(int) Number;
-(void) setNumber: (int) value;
-(void) TraceNumber;
@end
@implementation Test
-(int) Number
{
return number;
}
-(void) setNumber: (int) value
{
self.number = value;
}
-(void) TraceNumber
{
NSLog(@"number is %i", self.Number);
}
@end
由于受之前C++编程习惯的影响,写了上面的错误代码。当有一个实例Test* pTest调用,比如[pTest setNumber] 会导致死循环。因为self是指针类型,self.Number 其实是相当于调用一次[self setNumber],是一次函数调用。 而self->Number才是真正的直接对成员变量赋值。谨记。