使用@property和@synthesize时获取不正确的值

时间:2013-03-24 13:12:03

标签: ios

我创建了两个ViewControllers ViewControllerAViewControllerB。我在NSString中使用了myString对象ViewControllerA,并希望在ViewControllerB中获取此值。所以,我宣布了

@property(nonatomic,retain) NSString *myString

@synthesize myString 
ViewControllerA.m中的

。但是当我在ViewControllerA中创建ViewControllerB的对象并尝试获取myString的值时

NSString *tempString = viewControllerBobject.myString

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

4 个答案:

答案 0 :(得分:1)

您可能会收到(null)因为字符串尚未设置。

<强>尝试:

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

你得到了什么结果?

答案 1 :(得分:1)

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

答案 2 :(得分:1)

您获得了正确的价值。

VCA中字符串属性的值为nil。创建VC1时,会合成一个名为string的字符串属性。但它指向无处(其价值尚未设定)因此它是零。 因此,在VCB中创建VCA实例时,VCA的属性仍为零。 您需要将该属性的值设置为某个字符串。然后,所有VCA实例都将具有该默认值。 或者您需要在VCA的具体实例上设置该属性的值,然后,该具体实例将具有该值。

答案 3 :(得分:0)

在此行NSString *tempString = viewControllerBobject.myString之后,添加此[tempString retain];