0

2 つの ViewControllerViewControllerAViewControllerB. でNSStringオブジェクトmyStringViewControllerA取得しましたが、この値を で取得したいと考えていますViewControllerB。だから、私は宣言しました

@property(nonatomic,retain) NSString *myString

@synthesize myString 

ViewControllerA.m で。しかし、ViewControllerAinのオブジェクトを作成してlikeViewControllerBの値を取得しようとするとmyString

NSString *tempString = viewControllerBobject.myString

それから私はnull値を取得しています。正しい値を取得するには?

4

4 に答える 4

1

あなたはあまり詳細を提供していませんが、問題は、文字列の値を設定した場所で既に持っているものへの参照を取得するのではなく、View Controller A の新しいインスタンスを作成していることだと思います。その参照を取得する方法は、アプリの設定方法と、2 つのビュー コントローラーの相互関係によって異なります。サポートが必要な場合は、詳細を提供する必要があります。

于 2013-03-24T16:45:43.997 に答える
1

正しい値を取得しています。

VCA の文字列プロパティの値は nil です。VC1 を作成すると、string という文字列プロパティが合成されます。しかし、どこも指していない (値が設定されていない) ため、nil です。したがって、VCB で VCA インスタンスを作成しても、VCA のプロパティは nil のままです。そのプロパティの値を何らかの文字列に設定する必要があります。次に、すべての VCA インスタンスにそのデフォルト値が設定されます。または、VCA の具体的なインスタンスでそのプロパティの値を設定する必要があり、その具体的なインスタンスはその値を持ちます。

于 2013-03-24T19:07:16.997 に答える
1

(null)文字列がまだ設定されていないため、おそらく取得しています。

試す:

viewControllerBobject.myString = @"Hello World!";
NSString *tempString = viewControllerBobject.myString;
NSlog(@"tempString= %@", tempString);

どのような結果が得られますか?

于 2013-03-24T13:21:47.157 に答える
0

この行NSString *tempString = viewControllerBobject.myStringの後に、これを追加します[tempString retain];

于 2013-03-24T13:34:25.287 に答える