2011-06-26 7 views
0

最後の行に文字列を持つテーブルビューがあります。この場合NSStringをどのようにリークしていますか?

いくつかのイベントが発生したときに続いて、私はロードメッセージ変更されます
@interface MyTableViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> 
{ 
    NSString *loadingMessage; 
} 
@property (retain) NSString *loadingMessage; 
@synthesize loadingMessage; 

- (UITableViewCell *)tableView:(UITableView *)pTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
//some stuff... 
     cell.textLabel.text = loadingMessage; 
} 

:私はここでloadingMessage文字列をリークしています楽器によると

-(void)requestFailed:(NSError*)error { 
    self.loadingMessage = [NSString stringWithFormat:@"Failed with error: %@", error]; 
} 

を...しかし、私は、なぜ表示されません。私はstringWithFormatのカウントが+0で、セッターが+1であると思った。私もdeallocときに文字列を解放します。何が間違っているのですか?

+0

を停止する場合があり、何も悪いことはありません。このテストは、孤立したテストや、他のNSStringが間違っているかもしれないプログラムで行っていますか? –

+0

孤立したテストではありませんが、これは計測器レポートがリークする唯一のivarです。 –

+0

loadingMessageを使用して設定するコードを表示します。また、deallocでリリースしましたか? – Eiko

答えて

1

あなたが投稿したコードは正しいです。確かに、stringWithFormatは、自動解放されたオブジェクトを返すので、それを保持されたプロパティに直接割り当てることができます。

コード内で他の割り当てを行っているか、deallocloadingMessageを公開していない可能性があります。

ちょっと仮説。

0

セルジオは正しいですが、コードに何も問題はありませんが、文字列のプロパティは保持するのではなくコピーする必要があることがわかりました。

@property (copy,readwrite) NSString *loadingMessage;

を試してみては、私が見ることができるものから漏れ

関連する問題