桥接Objective-C代码时可为空的准则

时间:2018-08-17 22:35:23

标签: objective-c swift objective-c-swift-bridge

我目前是Swift的新手,但我是Objective-C框架的维护者,该框架是C库的包装,为此,我想为其提供最好的API。

我在看this kind of code

/// The index checksum
@property (nonatomic, readonly, strong) GTOID * _Nullable checksum;

,想知道是否nullable批注是必要的。看着underlying C function

const git_oid *git_index_checksum(git_index *index)
{
    return &index->checksum;
}

很明显,the Obj-C wrapper中的模内存分配失败,

- (GTOID *)checksum {
    const git_oid *oid = git_index_checksum(self.git_index);
    if (oid != NULL) {
        return [GTOID oidWithGitOid:oid];
    }
    return nil;
}

这不能为空。

是吗?

在桥接时,尤其是面对分配失败时,是否存在一些特定的准则来确定什么是可接受的w.r.t空性?如果我将该属性设为nonnull并且内存失败,Swift的反应会有所不同吗?

0 个答案:

没有答案