尝试访问
中设置的函数以外的函数时,出现“ 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;
答案 0 :(得分:8)
您的-getSessionID
方法正在返回一个自动释放的变量 - 当您稍后再次尝试访问该指针时,该字符串已被释放,因此该引用不再有效。首次检索时,您需要在变量上调用-retain
,如下所示:
sessionID = [[self getSessionID] retain];
然后,在您的班级-dealloc
中,您需要平衡保留与版本:
[sessionID release];
答案 1 :(得分:6)
如果getSessionID遵循正常的Cocoa约定,则返回一个自动释放的对象。您需要保留它,或者只要自动释放池耗尽(可能在事件循环结束时),sessionID就会成为悬空指针。
如果您不熟悉Objective C和Cocoa,请务必阅读the Apple documentation about the memory model。
答案 2 :(得分:0)
我有类似的问题,当你没有分配任何内存时它会崩溃。像这样发布它:
UIImage *lObj_image = [UIImage imageNamed: @"bluebar.png"];
.
.
.
[lObj_image release];
检入viewdidload()