当前位置: 首页 > 面试题库 >

相当于_cmd的快捷方式是多少?

欧君之
2023-03-14
问题内容

我想获得当前的方法名称,以便在与此格式相似的格式消息中使用

[NSExeception raise:NSInternalInconsistencyException format:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)]

另外,我想使用_cmd设置关联对象。我很欣赏任何想法。


问题答案:

没有与的Swift等效项_cmd。没有理由在Swift中使用它。

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

  • 在宏中。该宏在代码中展开,因此,如果_cmd出现在宏中,则将其插入使用它的源中,因此可以在宏内部使用方法名称。但是,这样的宏在Swift中不存在。Plus宏是编译时的,因此类似的编译时机制__FUNCTION__也可以类似地工作。
  • 您可以定义一个采用self和的C函数_cmd,并将其(与同一方法一起使用)作为多种方法的实现,方法是使用class_addMethod和将其添加到函数中class_replaceMethod_cmd该函数内部将有助于区分不同的方法html" target="_blank">调用。但是,class_addMethod并且class_replaceMethod在Swift中不可用。
  • 方法混乱也是与方法实现混在一起的过程。由于在交换中交换了两个方法的实现,_cmd将有助于显示调用中使用的实际方法名称,这可能与源代码中代码所在的方法不匹配,因为实现被交换了。我猜方法在Swift中仍然可能出现混乱,因为在Swift method_exchangeImplementations中仍然可用。但是在方法混乱中,要交换的方法是针对与其交换的方法量身定制的,因此,如果调用了该方法,则不会混淆哪个方法的名称被调用。
  • 如果您手动获取方法的IMP(实现函数),然后使用其他选择器手动调用它。在这种情况下,函数内部可以看到中的其他选择器_cmd。但是,您不必担心在Swift中会因为获取的IMP方法不可用而担心。


 类似资料:
  • 关于快捷方式 您可以仅使用键盘导航Eclipse用户界面 - 使用与菜单和菜单项关联的助记符。 使用与对话框或视图或编辑器中的控件关联的助记符。 使用与工具栏上的菜单项和按钮等操作关联的加速器。 可以通过单击Ctrl + Shift + L调用的“键辅助”操作向我们显示Eclipse中可用的所有加速键或快捷键。 可以使用“键”首选项页面更改分配给操作的组合键。 Eclipse中有许多命令或操作,没

  • 快捷方式是用于执行一组活动的键的组合。 您可以在Keymaps指南参考中找到PyCharm快捷方式列表。 寻找捷径 快捷方式列表位于以下选项“ Help -》 Find Action菜单中,其中弹出一个快捷方式窗口。 您可以看到如下所示的快捷方式窗口 - 快捷方式包括标识符列表,带功能的快捷方式和选项菜单栏。例如,视图导航栏包括切换ON和OFF,根据值设置(ON和OFF)显示导航栏。

  • target String - 从这个快捷方式启动的目标。 cwd String(可选) - 工作目录。默认值为空。 args String(可选) - 从此快捷方式启动时应用于`target'的参数。默认值为空。 description String(可选) - 快捷方式的描述。默认值为空。 icon String(可选) - 图标的路径,可以是DLL或EXE。 icon和iconIndex必须

  • 我刚从Eclipse切换到android Studio。只是想知道是否有一种方法可以将我的快捷方式从eclipse导入到android Studio。 我知道android studio中有一个使用eclipse默认快捷方式的选项: (但是,这样做将不会有所有eclipse快捷方式,如Ctrl+1或Ctrl+Shift+O或...) 但是我没有找到任何方法将我所有的自定义快捷方式从Eclipse导

  • 我有大量的多边形(~100000),并尝试找到一种智能方法来计算它们与规则网格单元的相交面积。 目前,我正在使用shapely创建多边形和网格单元(基于它们的角坐标)。然后,我使用一个简单的for循环遍历每个多边形,并将其与附近的网格单元进行比较。 只是一个小例子来说明多边形/网格单元。 (顺便说一下:网格单元的尺寸为0.25x0.25,多边形最大为1x1) 实际上,对于单个多边形/网格单元组合来

  • 问题内容: 在子类中重写方法时,我经常这样做: 我的问题是:super(type(self),self)是否有捷径? 问题答案: 不要那样做:如果仅可以将其用作第一个参数,那么就不必将它放在第一位。您必须在此处传递实际的类,而不是如果该类已被子类化的表达式可能会更改的表达式。 super的第一个参数必须是包含当前方法定义的类,因为您要告诉super在基础列表中从哪里开始搜索。 Python 3知道