我目前是Swift的新手,但我是Objective-C框架的维护者,该框架是C库的包装,为此,我想为其提供最好的API。
/// 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的反应会有所不同吗?