Iphone 最好允许对象类型为';id';或者为一个方法的两种不同类型提供两个参数?
假设一个方法将要向某个NSMutableArray或NSMutableDictionary添加一个对象。只允许一个类型为Iphone 最好允许对象类型为';id';或者为一个方法的两种不同类型提供两个参数?,iphone,objective-c,ios,cocoa-touch,ipad,Iphone,Objective C,Ios,Cocoa Touch,Ipad,假设一个方法将要向某个NSMutableArray或NSMutableDictionary添加一个对象。只允许一个类型为id的参数,还是允许两个参数(一个用于数组,一个用于字典)更好 例如: - (void)addObjectToArray:(NSMutableArray *)anArray orDictionary:(NSMutableDictionary *)aDictionary; vs 如果使用第一个选项,我只需将nil作为参数传递给我不需要的任何一个(即,如果
id
的参数,还是允许两个参数(一个用于数组,一个用于字典)更好
例如:
- (void)addObjectToArray:(NSMutableArray *)anArray
orDictionary:(NSMutableDictionary *)aDictionary;
vs
如果使用第一个选项,我只需将
nil
作为参数传递给我不需要的任何一个(即,如果添加到字典,我会将nil
作为数组参数传递)。两者都不—我将实现两个单独的方法,一个用于数组,另一个用于字典:
- (void)addObjectToArray:(NSMutableArray *)anArray;
- (void)addObjectToDictionary:(NSMutableDictionary *)aDictionary;
它比以前简单得多,更易于测试和维护
nil
或都不是nil
时会发生什么情况);或当然,这两种方法可能做的事情非常相似,因此它们都应该调用另一个包含它们的共享实现的方法(如果可能的话)。没有必要编写两次代码。感谢BoltClock和@JonathanGrynspan。今晚我应该可以花一点时间重新分解代码,之后我想我会接受这个答案。Dictionary需要对象之外的一个键来存储,那么您如何传递该键呢?该键是基于对象作为属性的两个不同整数值构造的。
- (void)addObjectToArray:(NSMutableArray *)anArray;
- (void)addObjectToDictionary:(NSMutableDictionary *)aDictionary;