swift 学习记录

OC和Swift混编,“项目名-Swift.h”文件找不到

2018-03-01  本文已影响1097人  桔子听

“工程名-Swift.h”这个文件是将Swift代码转为OC的文件,打开这个文件查看,可以看到全部是OC代码。例如,我在OC项目中,创建一个Swift文件,继承自UIView,命名为SwiftView。

自动生成的代码:

import UIKit

class SwiftView: UIView {

    /*
    // Only override draw() if you perform custom drawing.
    // An empty implementation adversely affects performance during animation.
    override func draw(_ rect: CGRect) {
        // Drawing code
    }
    */

}

build一下,查看“项目名-Swift.h”文件(在OC文件里,#import "工程名-Swift.h",然后跳到头文件查看,直接在工程导航栏里是找不到的),会在文件的底部看到:

@interface SwiftView : UIView
- (nonnull instancetype)initWithFrame:(CGRect)frame OBJC_DESIGNATED_INITIALIZER;
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
@end

这个说明,系统会把Swift文件转换为OC文件,放到“工程名-Swift.h”文件中,以供OC调用。

这里有一点要注意,“工程名-Swift.h”文件里的工程名到底是什么?实际并不是我们真正的工程名:


工程名

而是:

target->build setting->packaging->product module name

将product module name换成“product module name-Swift.h”。如果你的product module name有问题,例如是中文,特殊字符,你需要改为合法字符。改过之后,需要删除DerivedData文件夹,重新编译。

/Users/用户名/Library/Developer/Xcode/DerivedData
上一篇 下一篇

猜你喜欢

热点阅读