objective c - Swift classes not found in iOS app when importing a mixed framework -


i have framework objective-c , swift mixed together. compiles alone when import in objective-c ios app, swift classes not found objective-c classes found. swift classes found inside framework when importing myframework-swift.h ios app , framework 2 different projects in same workspace.

defines module , embedded content contains swift code set yes targets , swift classes public @objc

i tried use @import myframework , #import <myframework/myframework-swift.h> no success.

i don't see myframework-swift.h header file in framework's headers directory projects. not sure if normal. generated in deriveddata

edit: managed reproduce problem simple workspace in xcode 8 (but same in 7.3):

  • create new cocoa touch framework testframework in objective-c
  • create a.h file

    @class b;  @interface : nsobject  -(void)print:(b*)caller;  @end   
  • create a.m file

    #import <foundation/foundation.h> #import "testframework-swift.h"  #import "a.h"  @implementation  -(void)print:(b*)caller {     [caller test]; } 
  • create b.swift file

    import foundation  @objc public class b : nsobject {     public func test() {         print("test");     } } 
  • set a.h public header

  • import a.h testframework.h
  • try compile framework

here testframework-swift.h not found

  • set install objective-c compatibility header no
  • try compile framework

now compiles !

  • create new ios objective-c single view application app
  • update viewcontroller.m this

     #import "viewcontroller.h"  @import testframework;   @interface viewcontroller ()   @end   @implementation viewcontroller   - (void)viewdidload {      [super viewdidload];      b* b = [[b alloc] init];      a* = [[a alloc] init];      [a print: b];  } [...] @end 

you should have error on b not a. set defines module yes in both project without success

ok found answer. install objective-c compatibility header must set yes , import must #import <testframework/testframework-swift.h>and not #import "testframework-swift.h" inside framework


Comments

Popular posts from this blog

serialization - Convert Any type in scala to Array[Byte] and back -

matplotlib support failed in PyCharm on OSX -

python - Matplotlib: TypeError: 'AxesSubplot' object is not callable -