gpt4 book ai didi

cocoa - 帮助查看崩溃日志

转载 作者:行者123 更新时间:2023-12-03 16:25:18 25 4
gpt4 key购买 nike

当 Lion 从 sleep 中唤醒时,我的应用程序崩溃了。问题似乎出在正在寻找天气信息的后台线程上。我不确定,但我认为崩溃日志告诉我自动释放池正在弹出不再存在的对象,有人可以帮我确认这一点吗?

以下是崩溃日志的相关详细信息:

Process: myApp [14187] Identifier: myApp Version:
??? (???) Code Type: X86-64 (Native) Parent Process: launchd [224]

Date/Time: 2011-08-24 18:58:00.581 -0400 OS Version: Mac OS X 10.7.1 (11B26) Report Version: 9

Crashed Thread: 7

Exception Type: EXC_BAD_ACCESS (SIGSEGV) Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000010

Application Specific Information: objc[14187]: garbage collection is OFF

Thread 7 Crashed: 0 libobjc.A.dylib
0x00007fff9321700b (anonymous namespace)::AutoreleasePoolPage::pop(void*) + 385 1
com.apple.CoreFoundation 0x00007fff961306a5 CFAutoreleasePoolPop + 37 2 com.apple.Foundation
0x00007fff969350d7 -[NSAutoreleasePool drain] + 154 3
com.piso13.opusDomini 0x00000001000acb91 -[Weather internalStart] + 417 4 com.apple.Foundation
0x00007fff9698b1ea -[NSThread main] + 68 5 com.apple.Foundation
0x00007fff9698b162 NSThread
_main + 1575 6 libsystem_c.dylib
0x00007fff90b068bf _pthread_start + 335 7 libsystem_c.dylib
0x00007fff90b09b75 thread_start + 13

这是我的天气内部启动代码:

-(void)internalStart{
pool = [[NSAutoreleasePool alloc] init];

forecast = FALSE;
liveweather = FALSE;

NSString *query = [self generateQuery];
if (query == nil) {
[pool drain];
return;
}


XmlWrapper * xmlWrapper = [[XmlWrapper alloc] initWithQuery:query delegate:self name:@"liveweather"];
[xmlWrapper release];

query = [self generateForecastQuery];
xmlWrapper = [[XmlWrapper alloc] initWithQuery:query delegate:self name:@"forecast"];
[xmlWrapper release];

[pool drain];

}

我是否应该调用[池排水]?

最佳答案

创建具有绑定(bind)生命周期和显式作用域的自动释放池。

在这种情况下,您将自动释放池存储在 ivar 中(假定)。

只需将其设置为方法本地即可,如下所示:

- (void)internalStart
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
//...
[pool drain], pool = nil;
}

通常引入的问题是:

1) 自动释放池是基于堆栈的(池被压入和弹出)。如果按住它,您很容易打乱堆栈顺序。

2) 如果此类在多线程上下文中运行,则当您从多个线程推送和弹出池时,您可以轻松泄漏池或破坏堆栈顺序。

3)您还可以在多线程上下文中泄漏池

关于cocoa - 帮助查看崩溃日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7194586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com