【发布时间】:2014-07-19 00:21:23
【问题描述】:
我过去使用过的一个 Objective-c 函数的签名是:
- (MMCall *)getLocalizedAppCategoriesWithOptions:(MMOptions *)options
success:(void (^)(NSArray *response))success
failure:(void (^)(NSError *error))failure;
我习惯称它为-
[[whateverclassname new] getLocalizedAppCategoriesWithOptions:nil
success:^(NSArray *response) {
} failure:[^(NSError *error) {
}
它返回一个对象的 NSArray。这些对象的父类是 NSObject,它们的属性很少。 在尝试 swift 时,我用相应的头文件更新了桥接头文件。问题是 -
-
如果我按照以下方式调用它,我会收到编译错误,因为“'[AnyObject]' 与 'NSArray' 不同”
whateverclassname().getLocalizedAppCategoriesWithOptions(nil, success: {(response : NSArray!) in }, failure: {(error: NSError!) in }) -
如果我按照以下方式调用它,它会成功编译但应用程序在运行时崩溃 -
whateverclassname().getLocalizedAppCategoriesWithOptions(nil, success: {(response : [AnyObject]!) in }, failure: {(error: NSError!) in })
请帮我看看这是怎么回事?
【问题讨论】:
-
当它崩溃时你会收到什么消息?
-
没有这样的味精。但是线程在 [_NSArrayM insertObjectAtindex:] 之后显示 objc_exception_throw
标签: objective-c swift ios8