是最好返回NSArray还是void并更新self属性



我正在一个控制几个视图的委托类上工作,并且发现自己在更新委托中的属性和从方法返回值之间切换。正确的做法是什么?

(

) - 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;

,但似乎你可能在问别的东西,因为这些可以由编译器为你动态合成…所以试着换个问题,我们会再试着帮你的。

相关内容

  • 没有找到相关文章

最新更新