我的问题更多的是一般性问题,而不是具体问题。对于使用Swift编写的类,您可以使用可选工作流来验证方法是否存在(?)。如果它没有,您可以假设它返回nil
。
只有在使用Swift编写类时才会出现这种情况。 (这是一个修正假设)?
现在,如果您要引用Objective-C类并想要检查方法是否存在,则可以使用respondsToSelector
检查选择器#selector
。
这是否仅用于Objective-C类和Swift类,协议,继承自Objective-C类的协议/类扩展?
如果我应该扩展我的问题的任何部分,请告诉我。
答案 0 :(得分:1)
几乎没有任何需要在Swift中明确调用CategoryView
。你想要这样做的唯一时间是处理NSObject,在这种情况下,它可能是AnyObject或委托协议采用者,在任何一种情况下你都可以使用问号语法(调用{ {1}}对你而言。)
答案 1 :(得分:0)
对于用Swift编写的类,您可以使用 用于验证方法是否存在的可选工作流程(?)。如果它 不,你可以假设它返回零。
只有在使用Swift编写类时才会出现这种情况。 (就是它 修正假设)?
这不正确。当您说"使用可选工作流来验证方法是否存在"时,我假设您在调用"无法识别的选择器和可选链接&中描述的类型AnyObject
上的方法时会发生什么#34;在" id Compatibility"使用Swift with Cocoa和Objective-C指南中的一节。
此功能仅适用于Objective-C(@objc
)方法。 AnyObject
允许您仅动态访问Objective-C(@objc
)方法。
您可以调用任何Objective-C方法并访问任何属性 AnyObject值而不转换为更具体的类类型。这个 包括Objective-C兼容的方法和标有的属性 @objc属性。
您不能使用AnyObject
来调用纯Swift(非@objc
)方法。