如何在Swift语言中调用Objective C方法(返回协议)

时间:2017-10-03 11:33:41

标签: ios objective-c swift

我在新的Swift Project中实现了用Objective C语言编写的静态库。一切都很好,我可以成功地在swift代码块中调用类方法和实例方法。但是当我尝试调用一个返回协议的方法时,我收到一个错误。我没有在swift代码中成功调用下面的方法。

任何人都知道如何在Swift中调用此方法。

用Objective C编写的静态库 All methods is here

我无法调用名为getScreenManager的方法。此外,Xcode没有在Swift中显示此方法的提示。 enter image description here

IScreenManager在下面。

 @protocol IScreenManager <NSObject>

@property (weak, nonatomic) id<ScreenManagerDelegate> delegate;
@property (strong, nonatomic) NSDictionary *transitionDictionary;
@property (strong, nonatomic) NSArray *loadingImages;
@property CGFloat loadingAnimationDuration;
@property CGFloat loadingBackgroundAlpha;

- (void)showViewsWithObject:(id)object withMessage:(Response *)message;
- (void)enableScreen;
- (void)disableScreenWillShowLoadingView:(BOOL)willShow;
- (int)getActiveViewId;

- (void)applicationWillEnterForeground;
- (void)applicationDidEnterForeground;
- (void)applicationDidEnterBackground;

2 个答案:

答案 0 :(得分:2)

如果您使用的是swift 3或更高版本,那么请尝试使用方法screenManager,因为swift 3中有很多命名约定更改。由于这个Objective-c函数从swift调用也会影响。

Click here阅读更多

答案 1 :(得分:0)

我找到了解决方案。我认为,这是一种Xcode GM错误。因为我现在做了如何调用这个方法,我希望Xcode会像其他方法一样显示提示。当我写下面的代码部分时,Xcode没有触发错误并构建并成功运行。现在我正在下载Xcode 9.感谢大家的快速响应。

 override func getScreenManager() -> IScreenManager! {
    return MultiLayerScreenManager();
}