ナビゲーションコントローラの現在のビューを閉じて別のビューに置き換えるメソッドがあります。コードはこの現在のビューをポップするときにNSStringを別のビューに渡して保持する
-(void)didTransferRequest:(NSString *)_transferComments {
AddRequestViewController *ar = [[AddRequestViewController alloc]
initAsTransferForRequestID:requestID
withClosingComments: _transferComments]];
UINavigationController *currentNav = self.navigationController;
[[self retain] autorelease];
[currentNav popViewControllerAnimated:NO];
[currentNav pushViewController:ar animated:NO];
[ar release];
}
[AddRequestViewController.m]
-(AddRequestViewController *)initAsTransferForRequestID:(int)requestID
withClosingComments:(NSString *)closingComments{
self = [self initWithStyle: UITableViewStyleGrouped];
if (self) {
_requestID = requestID;
_closingComments = closingComments;
}
return self;
}
のように見える問題は、新しいビューがナビゲーションスタックにプッシュされると、ビューは_transferCommentsによって渡されたコンテンツにアクセスしようとしたとき、それがクラッシュするということです。ポインタは、ビューがポップされてから意味をなさせる他のものを指しています。
withTransferComments:[_transferComments copy]の使用に成功しましたが、このアナライザではメモリリークが確認されました。
コピーセーフを使用していますが、リークメッセージを無視するか、文字列を送信する方が良いでしょうか?
ああ、優秀です。詳細な応答をありがとう、ロブ。私はそれらの記事もチェックアウトします。 – jfuhr
@jfuhr、あなたの問題を解決した場合は、回答を受け入れてください。 – chatur