Iphone 在其他方法中使用NSString?

Iphone 在其他方法中使用NSString?,iphone,nsstring,global-variables,Iphone,Nsstring,Global Variables,这真的很尴尬,但我坚持了两个小时的反复试验 我在接口中将NSString声明为: NSString *testString; 然后我做了一个属性并合成了它。我在viewDidLoad中分配它时使用: testString = [[NSString alloc] initWithFormat:@"thats my value: %i", row]; 如果我想在另一个方法中获取字符串的值,它总是返回(null)。 所以字符串是空的,但是为什么呢?如何使一个类中的每个函数都可以访问它?所以我不想让

这真的很尴尬,但我坚持了两个小时的反复试验

我在接口中将NSString声明为:

NSString *testString;
然后我做了一个属性并合成了它。我在viewDidLoad中分配它时使用:

testString = [[NSString alloc] initWithFormat:@"thats my value: %i", row];
如果我想在另一个方法中获取字符串的值,它总是返回(null)。 所以字符串是空的,但是为什么呢?如何使一个类中的每个函数都可以访问它?所以我不想让一个全局变量只是“类内的全局变量”

这确实令人困惑,因为只要我编写代码,我就从未遇到过这个问题:(


非常感谢您的帮助!

在您的界面中,声明属性:

@property (nonatomic, readwrite, retain) NSString *testString;
self.testString = [[[NSString alloc] initWithFormat:@"that's my value: %i", row] autorelease];
在实施过程中,将其综合:

@synthesize testString;
在实现中,向
-dealoc
方法添加一个版本:

[self.testString release];
-viewDidLoad
中,访问以下属性:

@property (nonatomic, readwrite, retain) NSString *testString;
self.testString = [[[NSString alloc] initWithFormat:@"that's my value: %i", row] autorelease];

在接口中,声明属性:

@property (nonatomic, readwrite, retain) NSString *testString;
self.testString = [[[NSString alloc] initWithFormat:@"that's my value: %i", row] autorelease];
在实施过程中,将其综合:

@synthesize testString;
在实现中,向
-dealoc
方法添加一个版本:

[self.testString release];
-viewDidLoad
中,访问以下属性:

@property (nonatomic, readwrite, retain) NSString *testString;
self.testString = [[[NSString alloc] initWithFormat:@"that's my value: %i", row] autorelease];
我个人使用

self.testString = [NSString stringWithFormat:@"my value: %i",row];
这样你就不用担心发布它了

还要确保您始终使用“self”。

我个人使用

self.testString = [NSString stringWithFormat:@"my value: %i",row];
这样你就不用担心发布它了


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

您可以尝试在viewDidLoad中保留字符串。但是如果它对您有效,请不要忘记再次释放它。您可以尝试在viewDidLoad中保留字符串。但是如果它对您有效,请不要忘记再次释放它。

所有其他答案都让您直接或间接地
保留测试字符串。如何自从您获得带有
alloc
init
的testString之后,它就已经归您所有,无需再次
retain
ed

我认为您的问题与其他问题有关。您可能在某些方法中过早地释放了
testString
,或者在尝试使用其他方法访问
testString
时未调用您的
viewDidLoad


为了使用在实现中定义的变量,您不必将其声明为
@property
@synthesis
属性。这些可以帮助您,但您不必拥有它们。如果这个问题没有解决,您可能需要向我们显示更多代码。

所有其他答案都直接或间接地
保留
>正在初始化testString。但是,由于您使用
alloc
init
获取testString,因此它已归您所有,无需再次执行
retain
ed操作

我认为您的问题与其他问题有关。您可能在某些方法中过早地释放了
testString
,或者在尝试使用其他方法访问
testString
时未调用您的
viewDidLoad


为了使用在实现中定义的变量,您不必将其声明为
@property
@synthesis
它。这些都会有帮助,但您不必拥有它们。如果这个问题没有解决,您可能需要向我们显示更多代码。

谢谢!如果我想在viewcontroll中声明nsstring,该怎么办er1并想在viewcontroller中使用它吗?我采用了appDelegate.viewcontroller1.testString的方法,但它也返回(null):(你的appDelegate或viewcontroller也为null吗?只需在该点上添加一个断点并将指针悬停在其上即可。这里的一切都应该正常。(它显示所有初始化的对象等等…)谢谢!如果我想在viewcontroller1中声明nsstring并在viewcontroller中使用它,该怎么办?我采用了appDelegate.viewcontroller1.testString的方法,但它也返回(null):(您的appDelegate或viewController是否也为空?只需在该点添加一个断点并将指针悬停在断点上即可。此处的所有内容都应正常。(它显示所有初始化对象等…)