每种方法都有一个案例,具体取决于您实际在做什么。两个选择是:
- 它确实是一个辅助方法,在您的应用程序的许多地方都有使用。
- 它特定于单个类,字典是该类的成员。
选项 1) 如果它真的是一个辅助方法,我相信你应该从方法中返回 NSDictionary。我假设它是在该方法中新分配的。
换句话说,更喜欢:
+ (NSDictionary *) dictFromArray:(NSArray *);
如果它在单个类之外具有实用程序,您可以将它放在一个收集相关实用程序方法的合理类中。
在 C 中实践了传入要填充的空字典的替代方法,因为它围绕分配和释放创建对称性,并明确谁拥有内存。
在 Objective-C 中,引用计数处理了这一点,因此您可以避免为调用方法而分配空对象的额外代码。
例如:
NSMutableDictionary *myDict = [[NSMutableDictionary alloc] init];
dictFromArray(myArray, myDict);
当涉及到知道谁拥有对象时,您应该遵守 Objective-C 约定,其中:
+ (NSDictionary *) dictFromArray:(NSArray *)array
返回一个自动释放对象,因此调用者知道如果他们想要持有一个引用,他们需要保留它。
选项 2) 如果功能特定于单个类并且该类将字典作为成员,那么我将传入数组,使用数组内容更新字典成员变量,然后返回 void。
类似:
- (void) setBlahFromArray:(NSArray *)array