В вашем init
start = [NSDate date];
Не используется свойство start - используется переменная экземпляра start.Это означает, что удержание никогда не вызывалось.[NSDate date] возвращает объект, который будет автоматически выпущен.
Мой совет - использовать
self.start = [NSDate date];
Это свойство используется.В вашем случае я бы также объявил это свойство retain
, а не assign
.Если вы сохраните его assign
, вам нужно позвонить сохранить.Так что с assign
, также сделайте это
[self.start retain];
Один из способов убедиться, что вы все делаете правильно, - объявить поля, подобные этому
NSDate * _start;
Свойства, подобные этому
@property (retain, nonatomic) NSDate * start;
и затем sythesize следующим образом
@synthesize start = _start.
Затем вы узнаете, когда используете переменную экземпляра (которая обходит любые вызовы набора, автоматическое сохранение и т. Д.) Или свойство.
Если бы вы сделали это, то это не скомпилировало бы
start = [NSDate date];
Вам нужно будет либо перейти на этот
self.start = [NSDate date]; // use property
, либо на этот
_start = [NSDate date]; // use instance variable