2009-11-23 75 views
0

这真的很尴尬,但我坚持了两个小时的试验和错误。在其他方法中使用NSString?

NSString *testString; 

然后我犯了一个属性和合成它:

我在界面作为声明一个NSString。我将它分配在viewDidLoad中:

testString = [[NSString alloc] initWithFormat:@"thats my value: %i", row]; 

如果我想在另一个方法中获得字符串的值,它总是返回(null)。 所以字符串是空的,但为什么?我如何让它可以访问一个类中的每个函数?所以,我不想做一个全局变量只是一个

这真的很令人困惑的“全局变量的类中”,因为只要我的代码,我从来没有碰到了这个问题:(

感谢了很多帮助!我

回答

3

在你的界面,财产申报:

@property (nonatomic, readwrite, retain) NSString *testString; 

在实现中,合成它:

@synthesize testString; 

在实现中,添加一个释放到-dealloc方法:

[self.testString release]; 

-viewDidLoad,访问属性:

self.testString = [[[NSString alloc] initWithFormat:@"that's my value: %i", row] autorelease]; 
0

我个人使用

self.testString = [NSString stringWithFormat:@"my value: %i",row]; 

这样,你不要不需要担心释放它。

还要确保你总是使用“自我”。

+0

谢谢! 如果我想要在viewcontroller1中声明一个nsstring并想在viewcontroller中使用它,那该怎么办? 我采取了与appDelegate.viewcontroller1的方式。testString,但返回也是(null):( – user134282 2009-11-23 10:17:53

+0

你的appDelegate或viewController为空吗? – Chris 2009-11-23 10:39:01

+0

我该如何测试? – user134282 2009-11-23 10:46:28

0

你可以尝试在viewDidLoad中保留你的字符串。但如果它会为你工作,不要忘记再发布一次

0

所有其他答案有你直接或间接retain ing testString。但是,由于您获得了testString,其中包含allocinit,它已由您拥有,无需再次登录retain

我在想你的问题与其他事情有关。您要么以某种方式过早释放testString,要么在您尝试使用其他方法访问您的testString时未调用您的viewDidLoad

为了让您使用在您的实施中定义的变量,您不必声明它为@property@synthesize它。这些可以帮助,但你不必拥有它们。如果这个问题没有消失,你可能需要向我们展示更多的代码。