我正在一个控制几个视图的委托类上工作,并且发现自己在更新委托中的属性和从方法返回值之间切换。正确的做法是什么?
() - NSArray废话{返回myarray;}
或- (void)等等{【自我myarray:价值】}
--------------- 澄清下面的问题
如果我有一个助手方法把一个NSArray转换成一个NSDictionary我应该调用我的助手方法并期望返回NSDictionary,还是应该在内存中更新变量并返回void。
每种方法都有一个案例,这取决于您真正在做什么。这两个选择是:
- 这是一个真正的助手方法,在你的应用程序的许多地方使用。
- 指定一个类,字典是该类的成员。
OPTION 1)如果它真的是一个helper方法,我相信你应该从这个方法返回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
如前所述,这个问题令人困惑。如果它们是属性,那么你的访问器方法通常包括如下内容:
-(void) setMyValue: (NSString*) inNewValue;
-(NSString*) myValue;
,但似乎你可能在问别的东西,因为这些可以由编译器为你动态合成…所以试着换个问题,我们会再试着帮你的。