簡體   English   中英

為什么addObserver立即崩潰?

[英]Why is addObserver crashing instantly?

我有各種操作(源自NSOperation)來通過Internet進行異步查詢。 按照慣例,我將通過觀察其isFinished屬性來確定何時完成。

當一種特定類型的操作完成時,我想使用第一種方法中的信息來創建后續操作。 但是,當我這樣做時,在操作上調用addObserver會使我的應用程序崩潰,並且訪問權限錯誤。 由於觀察者是在隨機線程中調用的,因此我嘗試創建后續操作並在主線程上設置觀察者。 沒有不同。 這是在observeValueForKeyPath中完成的:

GetMessagesOperation* msgOp = 
  [[GetMessagesOperation alloc] initWithUserID:_user.getID()
                                     sinceLast:true
                                 includeSystem:true
                                   includeUser:false
                                      skipRows:0
                                      maxCount:50
                                     DBManager:_pDatabaseMgr];
[msgOp addObserver:self 
        forKeyPath:@"isFinished"
           options:0
           context:getMessageContext];
[_operationQueue addOperation:msgOp];
[msgOp release];

上下文是字符串的void *; 對於許多正常運行的其他操作,我使用相同的語法。 定義上下文的方法如下:

static void* systemInfoContext = (void*)@"sys";
static void* validateUserContext = (void*)@"user";
static void* getMessageContext = (void*)@"msg";

有人在這里猜嗎? 謝謝!

編輯:感謝您的答復。 沒有生成崩潰日志。 它只是通過對addObserver行的錯誤訪問而退出,並且無論我是在輸入observeValueForKeyPath的主線程還是后台線程上執行,都會發生這種情況。

呸! 整個問題是無法在操作的初始化方法中調用[super init]。

感謝所有仍在回答的人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM