首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么addObserver会立即崩溃?

为什么addObserver会立即崩溃?
EN

Stack Overflow用户
提问于 2012-01-14 14:32:11
回答 1查看 1.1K关注 0票数 1

我有各种各样的操作(从NSOperation派生)来在互联网上进行异步查询。按照惯例,我通过观察它们的isFinished属性来确定它们何时完成。

当一个特定类型的操作完成时,我想使用第一个操作中的信息创建一个后续类型的操作。但当我这样做时,在操作上调用addObserver会使我的应用程序崩溃,访问权限很差。由于观察者是在随机线程中调用的,所以我尝试创建后续操作并在主线程上设置观察者。没什么区别。这是在observeValueForKeyPath中完成的:

代码语言:javascript
复制
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];

上下文是字符串的一个空*;我对许多其他运行良好的操作使用了相同的语法。下面是上下文的定义方式:

代码语言:javascript
复制
static void* systemInfoContext = (void*)@"sys";
static void* validateUserContext = (void*)@"user";
static void* getMessageContext = (void*)@"msg";

有人猜到了吗?谢谢!

编辑:感谢您的回复。没有生成崩溃日志。不管我是在主线程上还是在输入observeValueForKeyPath的后台线程上执行,它都会退出,并在addObserver行上出现错误访问。

EN

回答 1

Stack Overflow用户

发布于 2012-01-15 06:48:08

哇!整个问题是在操作的初始化方法中调用super失败。

感谢所有回复的人。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8860617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档