我定义
@property (nonatomic, assign) int currentUserNum;
@property (nonatomic, assign) BOOL isAlive;
@interface MyClass
中的
并在-init
@implementation MyClass
方法
@synthesize currentUserNum, isAlive;
-(id) init {
if (self = [super init]) {
self.currentUserNum = 0;
self.isAlive = YES;
}
return self;
}
self.currentUserNum = 0;
已崩溃,但self.isAlive = YES;
可以正常工作!它们都是assign
属性。
我想知道为什么?谢谢!
答案 0 :(得分:5)
您的init
方法缺少很多重要的代码。
- (id)init {
if ((self = [super init])) {
_currentUserNum = 0; // it's not wise to reference properties in the init method
}
return self;
}
每个init
方法都应遵循此基本模式。您为self
分配了调用相应super init
或其他self init
的值。如果那不是nil
,那么您可以执行适当的初始化代码,最后返回self
。