笔记--NS_SWIFT_NAME与@objc区别与用途

swift中使用Selector经常要在方法前面添加@objc,除了默认的@objc,其实我们还可以添加自己制定的swift中调用的函数名

@objc(pushToControllerName:params:)
class func pushToController(_ name:String,params:[String:Any])  {
     print(params);
 }

@objc中重新设置了调用这个方法的名称,在OC文件中必须使用下面的方法调用
[ZJPushRouterTool pushToControllerName:@"PushViewController" params:@{@"name":@"zhang"}];

只添加@objc 关键字不用修改对应的方法调用名称

@objc class func pushToController(_ name:String,params:[String:Any])  {
    print(params);
 }
//调用
[ZJPushRouterTool pushToController:@"PushViewController" params:@{@"name":@"zhang"}];

在OC文件中使用 NS_SWIFT_NAME()关键字来重新定义在swift中使用的方法名;

+(instancetype)shareInstance NS_SWIFT_NAME(default());
//在swift文件中调用
Class.default()

//如果不重新制定的话 还是使用Class.shareInstance()

@objc和NS_SWIFT_NAME关键字的作用

  • NS_SWIFT_NAME:在objective-c中,重新命名在swift中的名称
  • @objc 在swift中,重新命名在objective-c中的名称。
posted @ 2019-11-29 10:36  蓝色的风1203  阅读(583)  评论(0编辑  收藏  举报