cco*_*oom 6 objective-c ios swift swift3
下面的Swift 3方法被翻译成Objective C,如:
func doSomething(param: String) throws // Swift 3
- (BOOL)doSomething:(NSString * _Nonnull)param error:(NSError * _Nullable * _Nullable)error; // Translated Objective C
Run Code Online (Sandbox Code Playgroud)
那么,如何编写一个包含throws和return类型的方法?
func doSomething(param: String) throws -> Int // Swift 3
// Error: Never translated into Objective C
Run Code Online (Sandbox Code Playgroud)
我知道流不应该由NSError对象处理.它只包含有关错误的信息.这就是为什么有一个BOOL返回类型让我们知道调用成功没有任何问题.
那我怎么能用throws语句和返回类型处理一个方法?有没有一种标准的方法来处理这个问题?
先感谢您.
Objective-C 中报告成功或失败的标准方法是返回布尔值NO或nil对象指针,如
使用和创建错误对象中所述:
重要提示:成功或失败由方法的返回值指示。尽管在 Cocoa 错误域中间接返回错误对象的 Cocoa 方法保证在该方法通过直接返回 nil 或 NO 指示失败时返回此类对象,但在尝试对该方法执行任何操作之前,您应该始终检查返回值是否为 nil 或 NO。 NSError 对象。
所以你可以返回一个对象的实例
func doSomething(param: String) throws -> NSNumber
Run Code Online (Sandbox Code Playgroud)
这被翻译成
- (NSNumber * _Nullable)doSomethingWithParam:(NSString * _Nonnull)param error:(NSError * _Nullable * _Nullable)error;
Run Code Online (Sandbox Code Playgroud)
nil如果抛出错误则返回,或者返回布尔值并通过引用传回其他值
func doSomething(param: String, value: UnsafeMutablePointer<Int>) throws
Run Code Online (Sandbox Code Playgroud)
映射到
- (BOOL)doSomethingWithParam:(NSString * _Nonnull)param value:(NSInteger * _Nonnull)value error:(NSError * _Nullable * _Nullable)error;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
854 次 |
| 最近记录: |