iphone – 最好是允许对象类型为’id’还是为方法提供两种不同类型的参数?

想象一下,一个方法是将一个对象添加到某个NSMutableArray或NSMutableDictionary.是否更好(以及为什么)只允许一个带有类型id的参数,或者允许两个 – 一个用于数组,一个用于字典?

例如:

- (void)addObjectToArray:(NSMutableArray *)anArray
            orDictionary:(NSMutableDictionary *)aDictionary;

- (void)addObjectToArrayOrDictionary:(id);

如果使用第一个选项,我只需将nil作为参数传递给我不需要的任何一个(即如果添加到字典中,我将nil作为数组参数传递).

最佳答案
两者都没有 – 我实现了两个单独的方法,一个用于数组,一个用于字典:

- (void)addObjectToArray:(NSMutableArray *)anArray;
- (void)addObjectToDictionary:(NSMutableDictionary *)aDictionary;

它比它更简单,更可测试,更易于维护

>一种具有尴尬签名和不明确行为的方法,具体取决于其参数(例如,当参数为零或两者都不为零时会发生什么?);要么
>一种弱类型的方法,它接受任何随机的Objective-C实例,并且必须在运行时验证它的类型.

转载注明原文:iphone – 最好是允许对象类型为’id’还是为方法提供两种不同类型的参数? - 代码日志