0

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?

rmaddy
  • 307,833
  • 40
  • 508
  • 550
a_tuo
  • 642
  • 5
  • 22

0 Answers0