当Objc-C桥接到Swift以及反之亦然时,如何查看方法签名?

时间:2019-04-03 17:49:27

标签: objective-c swift

如果我有一些Obj-C代码,而我是从Swift代码中调用的,或者我有一些我从Objective-C中调用的Swift代码。那我怎么看这些方法的签名呢?

我之前已经做过这件事,并且记得有一个Xcode生成的桥接标头,其中包含桥接方法签名。 但是我现在根本找不到。我似乎记得它已经生成到派生数据文件夹中,但是我根本找不到它。

谢谢

2 个答案:

答案 0 :(得分:1)

要查看如何将Objective-C接口导入Swift,请选择头文件,然后从“相关项”按钮中选择“生成的接口”:

enter image description here

示例:OClass.h:

NS_ASSUME_NONNULL_BEGIN

@interface OClass : NSObject

- (void)bar:(NSString *)string;

@end

NS_ASSUME_NONNULL_END

生成的接口:

open class OClass : NSObject {
    open func bar(_ string: String)
}

要查看Swift类如何映射到Objective-C,请选择一个Swift文件,然后从“相关项”按钮中选择“生成的接口->“ ProjectName.h”:

enter image description here

示例:“ SClass.swift”

class SClass: NSObject {
    @objc func foo() {

    }
}

“ MyProject-Swift.h”:

// ...
SWIFT_CLASS("_TtC9MyProject6SClass")
@interface SClass : NSObject
- (void)foo;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end
// ...

答案 1 :(得分:0)

禁止快速浏览

转到目标-> BuildSettings->(搜索“ Objective-C桥接”)YouProjectBridging.h 通过在“ YouProjectBridging.h”中的#import“ OtherVisible.h”添加其他.h文件。

快速转到目标

在每个要使用快速代码的.h文件中。 导入后,添加一行@class MySwiftClass;"

在导入后的.m文件中添加一行

#import <YourProjectName-Swift.h>

但是,在您希望调用的swift类中,首先应该将访问修饰符设置为

@objc open class MyswiftClass

属性和功能相同

 @objc public var button : UIButton!
 @objc public override func viewDidLoad()