Swift-OC互相调用注意事项

1、swift调用OC的方法,如果OC方法参数是自定义的类,同时需要把自定义的类导入到桥文件中,否则无法调用。

2、OC调用swift属性,需要在属性前面加上@Objc,否则无法调用

3、在OC的pch文件中导入#import“项目名-Swift.h”,主意Swift大写开头,如果项目名中有-,需要改写成_。比如MyProject-iOS改为:MyProject_iOS。

4、在构造方法里调用父类的属性时,注意他们的安全规则。

错误: `self` used before super.init call

在 init 中 有四个阶段的安全检查, 这里违背了第四个检查

        //初始化 编译的过程的四个安全检查

        // 1.在调用父类初始化之前 必须给子类特有的属性设置初始值, 只有在类的所有存储属性状态都明确后, 这个对象才能被初始化

        // 2.先调用父类的初始化方法,  再 给从父类那继承来的属性初始化值, 不然这些属性值 会被父类的初始化方法覆盖

        // 3. convenience必须先调用designated初始化方法,再给属性初始值.不然设置的属性初始值会被designated初始化方法覆盖

        // 4.在第一阶段完成之前, 不能调用实类方法, 不能读取属性值, 不能引用self

错误: Property not initialized at super.init call

他违反了 安全检查第1条. 

你可能感兴趣的:(Swift-OC互相调用注意事项)