2014-05-15 87 views
1

我正在構建一個小型演示應用程序,其中包含MQTTKitEstimote iOS SDK,這些應用程序對信標進行排序並將信標鄰近uuid,主要和次要信息發送給MQTT代理。在iOS7.1應用程序中無法找到EXC_BAD_ACCESS的原因

該示例工作良好一段時間,但有時它崩潰,我得到EXC_BAD_ACCESS (code=2, address=0x27c8eff4))Thread 1 - Queue:com.apple.main-thread。在Xcode中,在調試時,我可以看到下列異常時拋出:

CoreFoundation`CFRelease: 
0x2fdc9f54: push {r4, r5, r6, r7, lr} 

這就是異常的發生,但我不知道這代表着什麼,也沒有什麼意思。

任何人都可以指出的是,我沒有保留或提前釋放到,因爲從我讀過的對象的行中的東西被釋放提前,並試圖釋放後對其進行訪問?

編輯:按照註釋的建議,我已經啓用例外NSZombies和斷點,現在我得到更多的信息:

Pulsr(21312,0x3cb4118c) malloc: *** error for object 0x16f27404: incorrect checksum for freed object - object was probably modified after being freed. *** set a breakpoint in malloc_error_break to debug 

以及它停止線處[UIView animateWith ...];

dispatch_async(dispatch_get_main_queue(), ^(void){ 

    [UIView animateWithDuration:0.250 
          delay:0 
         options:UIViewAnimationOptionCurveEaseInOut 
        animations:^{ 
         weakSelf.streamingCountLabel.layer.backgroundColor = streaming ? weakSelf.yellowColor.CGColor : weakSelf.redColor.CGColor; 
        } 
        completion:nil]; 

    if (!streaming) 
    { 
     weakSelf.streamingCountLabel.text = @"0"; 
    } 
}); 
+0

你不能找到這一行? NSZOmbies不幫你? – Larme

+0

啓用異常斷點,並在您的問題中包含調用堆棧。此外,啓用殭屍@Larme建議。您可以很容易地找到所有這些步驟的說明 – jrturton

+0

嘗試爲您的項目運行'Analyze',有時它能夠發現您錯過的明顯問題。 –

回答

1

我想到的第一件事是這部分:

- (instancetype)init 
{ 
    self = [super init]; 
    return [self initWithUUID:ESTIMOTE_PROXIMITY_UUID identifier:@"Pulsr"]; 
} 

- (instancetype)initWithUUID:(NSUUID *)uuid identifier:(NSString *)identifier 
{ 
    self = [super init]; 

    if (self) { 
     _manager = [[ESTBeaconManager alloc] init]; 
     _region = [[ESTBeaconRegion alloc] initWithProximityUUID:uuid identifier:identifier]; 
    } 

    return self; 
} 

您在一個alloc上調用[super init]兩次。這可能不是問題,但它絕對是錯誤的方法。在這種情況下,只需從init方法中刪除[super init]。

+0

如果我刪除它,這意味着如果我只調用'init',我不會再調用'[super init]'。 – Roland

+1

不,它不會 - 超級初始化在'initWithUUID:...'內被調用。這是你指定的initializer_ :: https://developer.apple.com/library/ios/documentation/general/conceptual/CocoaEncyclopedia/Initialization/Initialization.html – jrturton

+0

你是對的,我的不好,我沒有注意到碼。感謝您指出:) – Roland

相關問題