Kri*_*oks 0 cocoa exc-bad-access objective-c
尝试访问其中设置的函数以外的函数中的变量时,出现" EXC_BAD_ACCESS "错误
该变量在' awakeFromNib '函数中设置:
//Retrieve Session-ID
sessionID = [self getSessionID];
Run Code Online (Sandbox Code Playgroud)
并在' searchBtnClick '中访问:
NSLog(@"Commening search (%@)",sessionID); // This causes the error
Run Code Online (Sandbox Code Playgroud)
变量本身在标题中定义:
NSString *sessionID;
Run Code Online (Sandbox Code Playgroud)
有人可以建议可能出现的问题吗?
getSessionID返回值的部分:
NSString *pC = @"";
// Separate Session ID
pC = [initCookie substringFromIndex:10];
pC = [pC substringToIndex:32];
NSLog(@"Got session ID : %@",pC);
return pC;
Run Code Online (Sandbox Code Playgroud)
您的-getSessionID方法返回一个自动释放的变量 - 当您稍后再次尝试访问该指针时,该字符串已被解除分配,因此该引用不再有效.-retain首次检索变量时需要调用变量,如下所示:
sessionID = [[self getSessionID] retain];
Run Code Online (Sandbox Code Playgroud)
然后,在您的课程中-dealloc,您需要平衡保留与发布:
[sessionID release];
Run Code Online (Sandbox Code Playgroud)
如果getSessionID遵循正常的Cocoa约定,则返回一个自动释放的对象.您需要保留它,或者只要自动释放池耗尽(可能在事件循环结束时),sessionID将成为悬空指针.
如果您不熟悉Objective C和Cocoa,则应确保阅读有关内存模型的Apple文档.
| 归档时间: |
|
| 查看次数: |
492 次 |
| 最近记录: |