HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 与_cmd相当的swift是什么?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想获取当前的方法名称,使用类似于这一个格式的消息
[NSExeception raise:NSInternalInconsistencyException format:@"You must override %@ in a subclass",NSStringFromSELEctor(_cmd)]

另外,我想使用_cmd设置关联对象.我很感激任何想法

解决方法

没有Swift等价于_cmd. Swift没有什么理由使用它.

在Objective-C中虑_cmd.什么时候有用?大多数情况下,_cmd的值与代码所在的方法名称相同,因此在编译时已经知道,并且不需要运行时值.以下是在_cmd在Objective-C中有用的一些可能的情况:

>在宏.宏在代码中被扩展,所以如果_cmd出现在宏中,那么它被插入到使用它的源中,因此方法名可以在宏中使用.但是,Swift中并不存在这样的宏.加上宏是编译时,所以像__FUNCTION__这样的编译时机制也可以工作.>您可以定义一个使用self和_cmd的C函数,并使用它(与同一个函数)作为多个方法的实现,通过使用class_addMethod和class_replaceMethod添加它,函数中的_cmd将有助于区分不同的方法调用.但是,Class_addMethod和class_replaceMethod在Swift中不可用.>方法swizzling也是一个混合实现方法的过程.由于在swizzling中交换两种方法的实现,_cmd将帮助揭示在调用中使用的实际方法名称,这可能与源代码代码方法不匹配,因为实现被交换.我猜Swift中的方法swizzling仍然是可能的,因为在Swift中仍然可以使用method_exchangeImplementations.但是在方法swizzling中,您交换的方法是针对与其进行交换的方法量身定做的,因此如果被调用,那么调用哪个方法名称就没有歧义.>在您手动获取方法的IMP(实现功能)的情况下,并使用其他选择器手动调用它.在这种情况下,函数内部可以看到_cmd中的不同选择器.但是,您不必担心Swift中的这一点,因为获取IMP的方法不可用.

大佬总结

以上是大佬教程为你收集整理的ios – 与_cmd相当的swift是什么?全部内容,希望文章能够帮你解决ios – 与_cmd相当的swift是什么?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。