1

プロトコルとデリゲートがあり、文字列を送信してから UItabbar のタブを変更します。私のプロトコルとデリゲートは検索するだけでビューコントローラーに文字列を設定しますが、ビューの読み込みが完了するとすぐに nil になります。コード;

-(void)duplicateAsset:(NSString *)serialNumber{

    [self setDubString:serialNumber];
    NSLog(@"delegate called DubString = %@",self.dubString);

}
- (void)viewDidLoad
{
    [super viewDidLoad];
    NSLog(@"_dubString in viewDidLoad = %@",self.dubString);
}

出力

 delegate called DubString = SERIALNUMBER
 _dubString in viewDidLoad = (null)

これまで何度も行ってきたので、何が起こっているのかわかりません。

編集:ログの内容を更新しました。文字列プロパティをcopyと に設定しましたstrongが、まだ文字列を保持できません

4

1 に答える 1

1

dubString示されているコードでは、実際にはに引数として渡していませんがNSLog、これは実際に使用しているコードですか? はいの場合、それが問題です。 を閉じる前に追加し, self.dubStringてください。そうでない場合は、プロパティがorに設定されていることを確認します(または、プロパティでない場合は、メソッドが文字列またはそのコピーの所有権を取得することを確認します)。)NSLogdubStringstrongcopysetDubString:

編集: 表示されているコードに問題はないようです。バグを追跡できない場合は、さらにコードを投稿してください (たとえば、 を呼び出している場所など、dubString が設定されているすべてのコンテキストduplicateAsset)。

duplicateAssetその間、呼び出されたオブジェクトと同じオブジェクトを呼び出していることを確認することをお勧めします(両方のデバッグ出力にviewDidLoadオブジェクト ID を含めます)。また、アクセサを自分で定義し、そこにデバッグ出力 (またはブレークポイント) を追加するなど、その間にself何も設定しないようにしてください。dubStringsetDubString:

于 2012-11-09T17:21:39.407 に答える