self使用时,导致死循环的的一个初级错误

来源:互联网 发布:envi处理sentinel数据 编辑:程序博客网 时间:2024/06/16 11:43

首先错误代码是这样的。

#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才是真正的直接对成员变量赋值。谨记。


0 0