Одна возможность состоит в том, что delegateVar
высвобождается преждевременно.
Например, возможно, свойство DelegateVar не настроено с опцией retain
, вы явно вызываете [delegateVar release]
или вы обходите установщик (и его сохраняющую семантику), присваивая ему напрямую (delegateVar =
вместо self.delegateVar =
).
В любом случае посмотрите на код, который создает, присваивает и освобождает DelegateVar.
Обновление:
Бинго.
Это ваша проблема прямо здесь:
[delegateVar release];
delegateVar = [NSString stringWithFormat:@"Test Value"];
NSLog(@"%@",delegateVar);
Вы присваиваете автоматически освобожденное значение (из + NSString stringWithFormat :) для DelegateVar и не предпринимаете никаких действий для его сохранения. Это означает, что как только applicationDidFinishLaunching:
вернется, DelegateVar автоматически освобождается (и становится недействительным).
Если DelegateVar является свойством с определенной опцией «retain», вы должны сделать это следующим образом:
self.delegateVar = [NSString stringWithFormat:@"Test Value"];
Вам не нужно освобождать DelegateVar перед присвоением ему (используя self.delegateVar =), потому что установщик сбросит старое значение по мере необходимости. Но вам нужно нужно выпустить его по вашему dealloc
методу.