1

我定义

@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财产。

我想知道为什么?谢谢!

4

1 回答 1

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.

于 2013-01-09T08:08:37.593 回答