0

これは私の最初の投稿なので、フォーマットに問題がないことを願っています。

このリーク「オンライン上のオブジェクトのリークの可能性」が発生しているのですが、理解できません。多分私はそれをあまりにも一生懸命に見ているので、私は問題を見ることができません。誰かが私を助けてくれますか?

行は質問です:appDelegate.imageText

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    PListFirstAppDelegate *appDelegate = (PListFirstAppDelegate *)[[UIApplication sharedApplication]delegate];

    appDelegate.imageText= [[NSString alloc]initWithFormat:@"%@",[[array objectAtIndex:indexPath.row]objectForKey:@"image"]];

    //NSLog(@"%@", appDelegate.imageText);

    NavigationalDescription *detailViewController = [[NavigationalDescription alloc] initWithNibName:@"NavigationalDescription" bundle:nil];


     // Pass the selected object to the new view controller.

     [self.navigationController pushViewController:detailViewController animated:YES];
     [detailViewController release];

}
4

4 に答える 4

1

initメソッドを使用してオブジェクトをインスタンス化するたびに、どこかでオブジェクトを解放するか、autoreleaseを呼び出す必要があります。

何かを返すクラスメソッドは、常に自動解放する必要があります。

したがって、使用する代わりに[[NSString alloc] initWithFormat...]

代わりに行い[NSString stringWithFormat:@"%@", myString]ます。

于 2012-08-17T17:51:05.737 に答える
1

でコードを置き換えます

 appDelegate.imageText= [[NSString alloc]initWithFormat:@"%@",[[array objectAtIndex:indexPath.row]objectForKey:@"image"]];

appDelegate.imageText= [NSString stringWithFormat:@"%@",[[array objectAtIndex:indexPath.row] objectForKey:@"image"]];
于 2012-08-17T17:52:28.797 に答える
0

その行の最後に自動解放呼び出しを追加する必要があります。iPadでは貼り付けコードをコピーできません:(したがって、現時点では例はありません。

appDelegate.imageText= [[[NSString alloc]initWithFormat:@"%@",[[array objectAtIndex:indexPath.row]objectForKey:@"image"] ] autorelease];

あなたは、メモリ管理の制御をimagetextインスタンスに委任することを言っています。必要に応じて文字列を保持する必要があります。

于 2012-08-17T17:47:05.917 に答える
0
appDelegate.imageText= [[NSString alloc]initWithFormat:@"%@",[[array objectAtIndex:indexPath.row]objectForKey:@"image"]];

割り当てられた文字列を画像テキストプロパティに割り当てています。プロパティの割り当ては、自動解放された文字列に対して行う必要があります。imageTextはretainプロパティである必要があるため、割り当てられている文字列の誤りを保持します。それが保持されている場合は、二重に保持されているため、オブジェクトがリークしています。

于 2012-08-17T17:48:26.420 に答える