[英]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.