0

我在 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
4

4 回答 4

1

利用

strToHoldAllContact = [NSString stringWithFormat:@"%@",str];
[[strToHoldAllContact retain] autorelease];

忘记释放。

于 2012-04-28T09:11:07.653 回答
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 文件相同的方式使用它。

于 2012-04-28T09:31:12.957 回答
0

只需更换

strToHoldAllContact = [NSString stringWithFormat:@"%@",str];

strToHoldAllContact = [[NSString alloc] initWithFormat:@"%@",str];

并在你不再需要它之后释放它。

于 2012-04-28T08:55:22.777 回答
0

无论您在哪里初始化或设置字符串,请执行此[strToHoldAllContact retain];操作,并且不要忘记在完成使用后释放它

于 2012-04-28T07:50:22.030 回答