2013-03-24 25 views
0

我創建了兩個ViewControllers ViewControllerAViewControllerB。我在中採取了NSString對象myString,並且想要在ViewControllerB中獲得此值。所以,我宣佈使用@property和@synthesize時得到不正確的值

@property(nonatomic,retain) NSString *myString 

@synthesize myString 
在ViewControllerA.m

。但是,當我創建的ViewControllerBViewControllerA一個對象,並嘗試獲取的myString值一樣

NSString *tempString = viewControllerBobject.myString 

然後我得到一個null值。如何獲得正確的價值?

+1

在你的問題中,你說'myString'是'ViewControllerA'的一個屬性。然而你發送一條消息給'ViewControllerB':'viewControllerBobject.myString'。 – Jean 2013-03-24 13:25:47

+0

是否使用ARC,否則您需要保留該字符串值。 – 2013-03-24 13:27:32

+0

@HinataHyuga我沒有使用ARC – 2013-03-24 13:30:12

回答

1

您可能得到(null),因爲字符串尚未設置。

嘗試:

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

你得到什麼結果呢?

0

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

1

您沒有提供太多細節,但我懷疑你的問題是,你正在創建視圖控制器A的新實例,而不是得到的一個參考一個你已經有了你設置字符串值的地方。如何獲得該參考取決於您的應用程序的設置方式以及兩個視圖控制器如何相互關聯。如果您需要幫助,則需要提供更多詳細信息。

1

您正在獲得正確的值。

VCA中字符串屬性的值爲零。在創建VC1時,會合成一個名爲string的字符串屬性。但它指向無處(其價值尚未確定),因此它是零。 因此,當您在VCB中創建VCA實例時,VCA的屬性仍然爲零。 您需要將該屬性的值設置爲某個字符串。然後,所有VCA實例將具有該默認值。 或者您需要在VCA的具體實例上設置該屬性的值,那麼該具體實例將具有該值。

相關問題