0

尝试访问函数中设置的变量以外的变量时出现“ EXC_BAD_ACCESS ”错误

该变量在 ' awakeFromNib ' 函数中设置:

//Retrieve Session-ID
sessionID = [self getSessionID];

并在“ searchBtnClick ”中访问:

NSLog(@"Commening search (%@)",sessionID); // This causes the error

变量本身在标题中定义:

NSString *sessionID;

有人可以建议这可能有什么问题吗?

getSessionID 返回值的部分:

NSString *pC = @"";

// Separate Session ID
pC = [initCookie substringFromIndex:10];
pC = [pC substringToIndex:32];

NSLog(@"Got session ID :  %@",pC);

return pC;
4

3 回答 3

8

您的-getSessionID方法正在返回一个自动释放的变量——当您稍后再次尝试访问该指针时,该字符串已被释放,因此该引用不再有效。您需要-retain在第一次检索变量时调用它,如下所示:

 sessionID = [[self getSessionID] retain];

然后,稍后,在您的班级中-dealloc,您需要平衡保留与释放:

 [sessionID release];
于 2010-05-23T15:57:56.123 回答
6

如果 getSessionID 遵循正常的 Cocoa 约定,它会返回一个自动释放的对象。您需要保留它,否则一旦自动释放池耗尽(可能在事件循环结束时),sessionID 就会变成一个悬空指针。

如果您是 Objective C 和 Cocoa 的新手,您应该确保阅读有关内存模型的 Apple 文档

于 2010-05-23T15:49:44.917 回答
0

我有类似的问题,当你没有分配任何内存时它会崩溃。像这样释放它:

UIImage *lObj_image = [UIImage imageNamed: @"bluebar.png"];

.
.
.

[lObj_image release];

检查您的viewdidload()

于 2011-05-25T07:51:09.193 回答