Swift&Objective-c混编swift代码体积优化

在Swift&Objective-c混编优化下,如何进一步减小代码体积大小?

1.取消整个类导出Objective-c方法

例如:类只在swift模块调用的情况
如下所示

@objc class STXXXXXBuilder: NSObject {
}
class STXXXXXBuilder{
}

2.取消类中非公有方法或扩展导出


/// XXXX页面
class STXXXXController: STBaseTableViewController

}
extension STXXXXController {

}

调整为


fileprivate extension STXXXXController {

}

3.取消类中部分swift方法导出Objective-c方法

例如:像UI控件,列表之类


SWIFT_CLASS("_TtC24SogouTranslatorDeveloper19STBaseTableViewCell")
@interface STBaseTableViewCell : UITableViewCell
- (nonnull instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString * _Nullable)reuseIdentifier OBJC_DESIGNATED_INITIALIZER SWIFT_AVAILABILITY(ios,introduced=3.0);
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)coder OBJC_DESIGNATED_INITIALIZER;
@end

若STBaseTableViewCell的基类不想导出
initWithCoder和initWithStyle方法,减小文件大小,可禁止这两个方法的oc方法导出,如下所示


class STXXXXCell: STBaseTableViewCell {
    
    @IBOutlet var buttons: [STXXXXButton]!
    
    @nonobjc override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
    }
    
    @nonobjc required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

优化效果:

截屏2021-04-14_下午7_35_30.png

可以想下swift类中IBOutlet/IBAction为什么是导出objective-c方法的、

你可能感兴趣的:(Swift&Objective-c混编swift代码体积优化)