1
我開始一個新的線程從可可線程不能訪問可可API
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
方法,使用
MyThread *thread1 = [[MyThread alloc] init] ;
[thread1 start] ;
其中MyThread
是NSThread
一個子類。
如果我在線程的main
方法中運行一個空的for
循環並退出,它工作正常。但只要我嘗試使用Cocoa API(例如NSString
甚至NSAutoReleasePool
),我的程序就會通過輸入調試器而掛起。
問題的根源是什麼?
[提示]:我嘗試通過調試程序,它曾經給我一個SIGBUS
錯誤。存在哪些內存訪問問題?
您是否在您的線程中設置了自動釋放池[按照文檔](http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Multithreading/CreatingThreads/CreatingThreads.html#//apple_ref/DOC/UID/10000057i-CH15-SW16)? –
@Adam Rosenfeld:「但只要我嘗試使用...'NSAutoReleasePool',我的程序只是通過輸入調試器掛起。」 –
請編輯您的問題以包含調試器的堆棧跟蹤。另外,你應該嘗試在樂器的殭屍模板下運行你的應用程序 - 如果你有過度釋放或者未被保留的東西,它會很快顯示出來,然後你可以查看對象的歷史記錄以找出你做錯了什麼。 –