Define an Objective-C method:
@implementation OCObject
+ (void)passArr: (NSArray *)arr {
void (^aBlock)(NSString *) = arr[0];
aBlock(@"Crash Here");
}
@end
Pass an array contains aBlock in Swift to Objective-C methodA:
class SwiftObject {
class func test() {
let aBlock: ((String) -> ()) = { str in
print(str)
}
OCObject.passArr([aBlock])
}
}
Then Call SwiftObject.test()
.
Crash at the line of aBlock(@"Crash Here")
, and throw Thread 1: EXC_BAD_ACCESS (code=1, address=0x0)
However, when I do this all in OC, it's OK.
Why? Is this related to the escaping closure?