0

我创建了两个 ViewControllerViewControllerAViewControllerB. 我已经拿了一个NSString对象myStringViewControllerA并想在ViewControllerB. 所以,我已经宣布

@property(nonatomic,retain) NSString *myString

@synthesize myString 

在 ViewControllerA.m. 但是当我创建一个ViewControllerAin对象ViewControllerB并尝试获取myStringlike的值时

NSString *tempString = viewControllerBobject.myString

然后我得到一个null值。如何获得正确的值?

4

4 回答 4

1

您没有提供太多细节,但我怀疑您的问题是您正在创建视图控制器 A 的新实例,而不是获取对设置字符串值的已有实例的引用。您如何获得该参考取决于您的应用程序是如何设置的,以及两个视图控制器如何相互关联。如果您需要帮助,您需要提供更多详细信息。

于 2013-03-24T16:45:43.997 回答
1

你得到了正确的值。

VCA 中字符串属性的值为 nil。当您创建 VC1 时,会合成一个名为 string 的字符串属性。但它没有指向任何地方(它的值尚未设置)因此它是零。因此,当您在 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 回答