Вы должны проверить все операторы, включающие ваши свойства, чтобы понять, где ваши переменные фактически освобождены. В любом случае, вот быстрое решение, которое позволит избежать сбоев, поскольку ваши переменные будут освобождены тогда и только тогда, когда им по-прежнему назначаются объекты:
- (Недействительными) dealloc {
if(to != nil{
NSLog(@"releasing: %@", to);
[to release];
}
if(from != nil{
NSLog(@"releasing: %@", from);
[from release];
}
if(information != nil){
NSLog(@"releasing: %@", information);
[information release];
}
[super dealloc];
}
Кроме того, вы можете загрузить, установить и использовать средство проверки CLANG, чтобы понять, почему ваш код неверен. Этот инструмент (который уже создан для Leopard 10.5.x) иногда может не дать правильного ответа, но, по моему личному опыту, он никогда не подводил. Я настоятельно рекомендую его как один из ваших ежедневных инструментов разработки.
Вы можете скачать его с
http://clang.llvm.org/StaticAnalysis.html
Использовать это действительно просто. Взгляните на
http://clang.llvm.org/StaticAnalysisUsage.html#BasicUsage
На практике вы просто создаете свой проект XCode с помощью команды
scan-build -k -V xcodebuild
Затем вы проверяете итоговые выходные HTML-файлы, используя команду, которая будет отображаться в окне вашего терминала. Эти файлы дадут вам подробное объяснение, почему что-то не так в вашем коде.
С уважением