gpt4 book ai didi

iphone - 为什么 addObserver 会立即崩溃?

转载 作者:行者123 更新时间:2023-11-28 17:39:10 25 4
gpt4 key购买 nike

我有多种操作(派生自 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] 失败。

感谢所有回答的人。

关于iphone - 为什么 addObserver 会立即崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8860617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com