我正在尝试按照 Dropbox 开发人员网站上的说明进行操作,但我不知道如何正确添加 DBRestClient 对象。现在在我的 .h 文件中 @end 之后我有:
DBRestClient *restClient;
在我的 .m 文件中,我有:
- (DBRestClient *)restClient {
if (!restClient) {
restClient =
[[DBRestClient alloc] initWithSession:[DBSession sharedSession]];
restClient.delegate = self;
}
return restClient;
}
我认为这就是 Dropbox 页面告诉我要做的事情;然而这会导致我的应用程序崩溃(我认为是因为它试图在不应该释放的时候释放restClient)。我还尝试将restClient 列为非原子属性,但上传等方法似乎不起作用。 (上传方法现在正常,上传完成后应用程序就崩溃了...)帮助?
Rupesh,基于 bee 4 月 20 日评论的详细规范答案是
self
正在被释放。
这意味着必须有代码按顺序执行以下操作。
restClient
函数创建的变量,该函数返回 (DBRestClient*) 类型的对象delegate
设置为该函数中的self
(见
上面的问题)self
指向的对象被释放,这意味着委托没有指向任何东西。 请记住,如果发送的消息是一个函数,则向 nil objc 对象发送消息只会有效地导致什么也没有发生或零赋值。 因此崩溃一定是由于某种其他类型的取消引用造成的。