ゾンビを有効にして xcode 4.5.1 (LLDB) デバッガーで ARC を使用しないアプリケーションを実行すると、-[super dealloc] (-[NSObject dealloc]) を呼び出すと、このエラーが 2 回発生します (2)。
* -[V2APIClient クラス]: 割り当て解除されたインスタンス 0x9d865c0 に送信されたメッセージ * -[V2APIClient クラス]: 割り当て解除されたインスタンス 0x9d865c0 に送信されたメッセージ
xcode 4.4.1 (LLDB) デバッガーで同じアプリケーションを実行すると、エラー メッセージが 1 回表示されます (1)。XCode 4.3.2 で同じアプリケーションの少し前のバージョンを実行すると、エラー メッセージがまったく表示されません (0)。同じ/最新のコードでこれを再試行します。
参考までに-これは、まだ回答されていないこの他の投稿とまったく同じ問題のようです: -[Foo class]: message sent to deallocated instance on [super dealloc] )
同じ質問を 2 回再投稿しないようにしましたが、続行するように勧められました: https://meta.stackexchange.com/questions/152226/avoiding-asking-a-question-thats-already-been-asked
また、Apple Developer Forums で同等の質問をしました: https://devforums.apple.com/thread/171282
最後に、これが私のクラスの本質です。
@interface ASIHTTPRequestHandler : NSObject {
id _error;
}
@property (nonatomic,retain) id error;
@end
@implementation ASIHTTPRequestHandler
@synthesize error = _error;
-(id)init
{
self = [super init];
if (self)
{
self.error = nil;
}
return self;
}
-(void)dealloc
{
self.error = nil;
[super dealloc];// this is the line that appears to cause the problems
}
@end
この問題の解決を手伝ってください。メモリ管理規則に違反しているとは思いませんが、このエラーはそうでないことを暗示しているようです。この問題を解決できるまで、新しいコードをチェックインするのをためらっています。
ありがとう、チャック
ps記録のために、呼び出しコードは次のとおりです。
PanoTourMgrAppDelegate *ptmAppDlgt = [PanoTourMgrAppDelegate getApplicationDelegate];
Settings *settings = ptmAppDlgt.settings;
Identification *identification = ptmAppDlgt.identification;
V2APIClient *v2ApiClient = [[V2APIClient alloc] initWithSettings:settings identification:identification];
NSDictionary *result = [v2ApiClient get_application_status];
BOOL success = [v2ApiClient callWasSuccessful:result];
if (!success)
{
id error = v2ApiClient.error;
NSString *mbTitle = nil;
NSString *mbMessage=nil;
if ([error isKindOfClass:[NSString class]])
{
mbTitle = @"Application version no longer suppported";
mbMessage = (NSString*)error;
[MessageBox showWithTitle:mbTitle message:mbMessage];
}
}
[v2ApiClient release]; // This is the line that indirectly causes the messages above