0

私のiPhoneアプリケーションはTab based. タブに、Security Tab3 つのビュー コントローラーがあるとしFirst, Second, Thirdます。Thirdビューコントローラーからビューコントローラーに文字列値を渡していますSecondThirdselectedAlertDesc は、 View Controllerの NSString オブジェクトです。

Thirdビューコントローラーで:

@property (nonatomic,retain) NSString *selectedAlertDesc;
@synthesize selectedAlertDesc = _selectedAlertDesc;

Secondビューコントローラーで:

Third *controller = [[Third alloc] init];
[controller setSelectedAlertDesc:[[alertArray objectAtIndex:indexPath.row] objectForKey:@"alertDesc"]];
[self.navigationController pushViewController:controller animated:YES];
[controller release];

タブを変更するまでは問題なく動作します。View Controller ページのセキュリティ タブを離れ、Third別のタブにアクセスした後に戻ってくると、クラッシュします。それは、selectedAlertDescがゾンビになったと述べています。

-[CFString stringByReplacingOccurrencesOfString:withString:]: message sent to deallocated instance 0xeb3d760

この問題を解決するにはどうすればよいですか? 合成されたオブジェクトを初期化すべきではないと思います。私はここで何かを忘れていますか?

編集:

提案されたように、割り当て/保持履歴を確認するためにツールを使用しました。私は以下を手に入れました: - を使用した後selectedAlertDesc、私はそれを保持しました。やり方は正しいですか??そしてちゃんと動く!!

_selectedAlertDesc = [_selectedAlertDesc stringByReplacingOccurrencesOfString:@"opentag" withString:@"<"];
_selectedAlertDesc = [_selectedAlertDesc stringByReplacingOccurrencesOfString:@"closetag" withString:@">"];
[txtTxtVw setText:_selectedAlertDesc];

ここに画像の説明を入力

4

1 に答える 1

0

コメントから:

set...関連するプロパティのメソッド (または対応するドット表記)を使用する代わりに、新しい値をインスタンス変数に直接代入するコードがエラーの原因であることが判明しました。これにより、プロパティ属性がバイパスされ、自動解放された文字列が割り当てられます。

(主な手がかりは、Instruments 保持履歴の欠落エントリです。)

于 2012-10-15T14:31:04.610 に答える