iOS 中的 Dropbox API:如何使用 DBRestClient?

问题描述 投票:0回答:1

我正在尝试按照 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 列为非原子属性,但上传等方法似乎不起作用。 (上传方法现在正常,上传完成后应用程序就崩溃了...)帮助?

ios objective-c dropbox
1个回答
0
投票

Rupesh,基于 bee 4 月 20 日评论的详细规范答案是

self
正在被释放。

这意味着必须有代码按顺序执行以下操作。

  1. 通过调用
    restClient
    函数创建的变量,该函数返回 (DBRestClient*) 类型的对象
  2. 该变量将其组件(@property?可能)
    delegate
    设置为该函数中的
    self
    (见 上面的问题)
  3. 后来,
    self
    指向的对象被释放,这意味着委托没有指向任何东西。
  4. 后来,一定有代码试图出于某种目的取消引用委托。

请记住,如果发送的消息是一个函数,则向 nil objc 对象发送消息只会有效地导致什么也没有发生或零赋值。 因此崩溃一定是由于某种其他类型的取消引用造成的。

© www.soinside.com 2019 - 2024. All rights reserved.