当在iOS上通过gobind对接口类型使用gobind时,返回error
的golang函数会对Objective C中的类产生2个影响(下面的示例):
- 包含传入的NSError指针
- 该方法返回一个布尔值
我可以推断出如何使用NSError指针,这是一个标准的目标C实践。但是我应该为布尔值返回什么值?错误时为TRUE,成功时为TRUE?相反?其他东西?我似乎找不到任何文档。
示例
像这样的接口:
type A interface {
DoThing(data *DataType) error
}
字符串
Get是一个像这样的目标C接口:
@interface PackageA : NSObject <goSeqRefInterface, PackageA> {
}
@property(strong, readonly) _Nonnull id _ref;
- (nonnull instancetype)initWithRef:(_Nonnull id)ref;
// Important bit is here:
- (BOOL)doThing:(data* _Nullable)DataType error:(NSError* _Nullable* _Nullable)error;
@end
型
1条答案
按热度按时间k4ymrczo1#
在XNUMBER-C中,对于执行可能导致错误的操作的方法来说,返回一个指示成功或失败的布尔值with
YES
for success andNO
for failure,并在必要时接受NSError **
parameter以提供错误详细信息是标准的。将此应用于
gomobile
和gobind
生成的代码,您应该以相同的方式处理布尔返回值。对于你的Go界面:
字符串
gomobile
将生成一个类似于(如您所提到的)的X-C接口:那么,一个C-C方法将是:
型
在此模式中,
gomobile
遵循与Apple的XNUMX-C方法相同的约定,即返回指示操作成功的布尔值,并带有可选的NSError
以详细说明发生的任何错误。