gpt4 book ai didi

iphone - 允许对象类型为 'id' 还是为方法的两种不同类型提供两个参数更好?

转载 作者:可可西里 更新时间:2023-11-01 05:10:36 24 4
gpt4 key购买 nike

假设一个方法要将一个对象添加到某个 NSMutableArray 或 NSMutableDictionary。是只允许一个类型为 id 的参数更好(以及为什么),还是允许两个 - 一个用于数组,一个用于字典?

例如:

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

对比

- (void)addObjectToArrayOrDictionary:(id);

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

最佳答案

两者都不是 — 我将实现两种不同的方法,一种用于数组,一种用于字典:

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

它比

更简单、更可测试和更可维护
  1. 一个方法带有笨拙的签名,以及取决于其参数的不明确行为(例如,当参数均为 nil 或均非 nil 时会发生什么?) ;或者

  2. 接受任何随机 Objective-C 实例的弱类型方法,并且无论如何都必须在运行时验证其类型。

关于iphone - 允许对象类型为 'id' 还是为方法的两种不同类型提供两个参数更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7801424/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com