Objective c 在选择一类对象和在目标c中使用id之间是否存在中间地带?

Objective c 在选择一类对象和在目标c中使用id之间是否存在中间地带?,objective-c,object,interface,implementation,Objective C,Object,Interface,Implementation,在编写接口和实现文件时,是否在选择一类对象作为参数或返回并使用id之间找到了一个中间点?也就是说,我可以选择一组可以使用的类,而不是一个特定的类或任何对象类型(id)?您可以选择一个公共超类,或者如果有效的类都实现了协议,则可以选择一个公共超类。您可以选择一个公共超类,或者,如果有效类都实现了协议,则为a。您可以指定Objective-C类型必须符合协议NSObject既是一个类又是一个协议。因此,一个想法是指定id 或者,让您的协议扩展NSObject协议。如果需要使用诸如respondsTo

在编写接口和实现文件时,是否在选择一类对象作为参数或返回并使用id之间找到了一个中间点?也就是说,我可以选择一组可以使用的类,而不是一个特定的类或任何对象类型(id)?

您可以选择一个公共超类,或者如果有效的类都实现了协议,则可以选择一个公共超类。

您可以选择一个公共超类,或者,如果有效类都实现了协议,则为a。

您可以指定Objective-C类型必须符合协议
NSObject
既是一个类又是一个协议。因此,一个想法是指定
id


或者,让您的协议扩展
NSObject
协议。如果需要使用诸如
respondsToSelector

之类的方法,则需要指定Objective-C类型必须符合协议
NSObject
既是一个类又是一个协议。因此,一个想法是指定
id


或者,让您的协议扩展
NSObject
协议。如果你想使用诸如
respondToSelector

之类的方法,你就需要它。直到你建议我使用respondToSelector,我才意识到我想使用respondToSelector。不用担心!是的,在对被委派者执行performSelector之前调用它是一种标准做法。如果您使用的设计模式(在@protocol和@optional方法之外)需要大量使用
respondsToSelector:
isKindOfClass:
,那么您的体系结构可能是次优的,或者至少是非常超出标准的。一般来说,您应该很少需要使用原始
id
作为类型或使用内省。我认为学员的既定做法是在调用方法之前首先使用
respondsToSelector:
进行检查。我到处都能看到它,包括苹果的示例代码和文档。我错过了什么吗?直到你建议我使用respondToSelector,我才意识到我想使用respondToSelector。不用担心!是的,在对被委派者执行performSelector之前调用它是一种标准做法。如果您使用的设计模式(在@protocol和@optional方法之外)需要大量使用
respondsToSelector:
isKindOfClass:
,那么您的体系结构可能是次优的,或者至少是非常超出标准的。一般来说,您应该很少需要使用原始
id
作为类型或使用内省。我认为学员的既定做法是在调用方法之前首先使用
respondsToSelector:
进行检查。我到处都能看到它,包括苹果的示例代码和文档。我错过什么了吗?