-2
嗨我有一個問題,當我嘗試獲取全局變量或設置值的值。 該代碼是在應用程序生命週期的applicationDidEnterBackground
方法,這對我的作品的時候,我需要知道在實時呼叫的狀態,但有時這產生EXC_BAD_ACCESSEXC_BAD_ACCESS塊異步與ARC
這是變量聲明@property(nonatomic, copy) NSNumber *calling;
,這是在我的.h文件。
這是我的我的.m實現文件的代碼:
__unsafe_unretained typeof(self) weakSelf = self;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
@autoreleasepool
{
while (weakSelf.calling.intValue == 1)
{
callCenter.callEventHandler = ^(CTCall* call)
{
if([call.callState isEqualToString:CTCallStateDisconnected])
{
weakSelf.calling = [[NSNumber numberWithInt:0] copy];//Error EXC_BAD_ACCESS
}
};
}
}
});
但有時產生錯誤和其他時間不。任何想法?
用__weak替換'__unsafe_unretained'。當被引用的對象被釋放時,弱變量會自動被設置爲「nil」。 – rmaddy
另外,你爲什麼要在不可變的'NSNumber'對象上調用'copy'? – rmaddy
我用__weak但這不起作用,我刪除了NSNumber的副本,但它不工作,:( – kakashy