美文网首页Swift开发
@objc和下划线_ 在OC和Swift混编中的作用

@objc和下划线_ 在OC和Swift混编中的作用

作者: 码农耕 | 来源:发表于2019-07-10 11:44 被阅读0次

    1、@objc

    Swift 的静态语言特性,每个函数的调用在编译期间就可以确定。因此在编译完成后可以检测出没有被调用到的 swift 函数,优化删除后可以减小最后二进制文件的大小。
    而OC是动态语言,函数的调用在运行时才能确定有没有被调用。所以为了避免OC找不到swift的函数,添加 @objc 的方法表示这个方法是被OC调用的,这样swift在编译的时候,虽然检测到这个函数暂时没有被调用,但是也不会被优化删除,编译进项目-Swift文件中。

    作用:把函数编译进项目-Swift文件中。
    这样在OC调用swift的方法的时候就不会报找不到这个方法了。

    2、下划线 _

    忽略参数名(show me code)

    eg:
    2.1加下划线
    @objc func OnLocalVideoInit(_ session: AVCaptureSession)

    生成的OC函数名是:

    • (void)OnLocalVideoInit:(AVCaptureSession * _Nonnull)session;

    2.2不加下划线
    @objc func OnLocalVideoInit(session: AVCaptureSession)

    生成的OC函数名是:

    • (void)OnLocalVideoInitWithSession:(AVCaptureSession * _Nonnull)session;

    通过2.1和2.2的例子可以很清晰的看出下划线在OC和Swift混编中的作用了

    相关文章

      网友评论

        本文标题:@objc和下划线_ 在OC和Swift混编中的作用

        本文链接:https://www.haomeiwen.com/subject/mnwckctx.html