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
  • 314,917
  • 42
  • 532
  • 579
a_tuo
  • 651
  • 7
  • 23

0 Answers0