我在4小时内变得疯狂,我真的需要帮助。这是代码:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
//check if strGroup has prefix and suffix #
BOOL result;
result = [strGroup hasPrefix: @"#"];
if (result)
{
result = [strGroup hasSuffix: @"#"];
if (result)
{
NSMutableString* string = [NSMutableString stringWithString: strGroup];
str = [strGroup substringWithRange: NSMakeRange (1, [string length]-2)];
strToHoldAllContact = [NSString stringWithFormat:@"%@",str];
}
}
NSLog(@"strToHoldAllContact=%@",strToHoldAllContact);
}
我正确地获得了strToHoldAllContact
的价值。但是当我尝试从另一种方法访问strToHoldAllContact
时,我收到错误:
[CFString respondsToSelector:]: message sent to deallocated instance 0x856f2a0
答案 0 :(得分:1)
使用
strToHoldAllContact = [NSString stringWithFormat:@"%@",str];
[[strToHoldAllContact retain] autorelease];
忘了发布。
答案 1 :(得分:0)
在初始化或设置字符串的地方执行此操作[strToHoldAllContact retain];
并且在完成使用后不要忘记将其释放
答案 2 :(得分:0)
只需替换
strToHoldAllContact = [NSString stringWithFormat:@"%@",str];
到
strToHoldAllContact = [[NSString alloc] initWithFormat:@"%@",str];
在你不再需要它之后释放它。
答案 3 :(得分:0)
使用ARC,在.h中将strToHoldAllContact声明为:
@property(strong) NSString *strToHoldAllContact;
<。>在.m中,使用它(在@synthesize之后)为self.strToHoldAllContact = [NSString stringWithFormat:@"%@",str];
这样你就不会有问题。
没有ARC,在.h中声明strToHoldAllContact为:
@property(retain) NSString *strToHoldAllContact;
并使用与ARC in.m文件相同的方式。