您的位置:首页 > 其它

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

2015-03-16 20:01 357 查看
首先错误代码是这样的。

#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才是真正的直接对成员变量赋值。谨记。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐