好的,我已经阅读了很多关于此的帖子和资源,但我仍然遇到同样的问题。我有一些NSString变量,我需要在整个类的多个地方使用类范围的变量。我尝试了很多种设置组合。首先,我确实在接口中声明了字符串,如下所示:
@interface iCodeViewController : UIViewController <NSXMLParserDelegate> {
NSString *myString;
}
我还添加了如下属性(我已尝试使用和不使用属性并进行合成)
@property (readwrite, retain) NSString *myString;
我也尝试过,(非原子的,保留的),(非原子的,复制的),(readwrite,copy)。
然后在.m文件中:
@synthesize myString;
我试过了:
self.myString = @"whatever";
myString = @"whatever";
我也尝试过和不用分配内存:
myString = [[NSString alloc] init];
我错过了什么?
在我'假设'在一个方法中设置字符串变量之后,我尝试用if ([myString isEqualToString:@"blah blah"])
在另一个方法中检查它,当我输入一个断点并将鼠标悬停在myString上时,它总是显示'无效的摘要。< / p>
谢谢!
答案 0 :(得分:1)
使用以下
@property (nonatomic, retain) NSString *myString;
self.myString = [NSString stringWithString:@"whatever"];
更多阅读SO帖子
答案 1 :(得分:0)
您可以在此处输入课程代码吗?你处理myString的方式非常好。 我能想到的一种可能性是你忘记了从init方法返回self。
在您的代码中可能存在其他可能与内存相关的混乱。
答案 2 :(得分:0)
我能够通过将NSMutableString初始化为100并仅附加到它来重现无效摘要。当我打电话给
时,我发现问题消失了[mutableString setString:@""];
之前
[mutableString appendString:string];