2017-09-26 108 views
0

这个问题也在问什么类型的东西我最好作为参数传递给类方法而不是作为类的属性传递? 例如,如果我们有一个方法func其中的类的name工作,然后我得到了两个选项:当预期设置ObjectiveC类属性时?

@property (nonatomic) NSString *name; 
- (void)func; 

OR

- (void)funcWithName:(NSString*)name; 

两个看起来像由ObjC有效的设计给我。 但是,我不清楚在调用func之前,班级的用户是否需要知道他需要设置name属性?如果这不是该属性的适当用法,那么对于非只读属性,它是适当的用法是什么用例?

回答

1

你在比较苹果和橘子。你所建议的两种架构与其他架构无关。

  • 如果类需要name财产出于某种原因,它应该有一个name财产。

  • 如果方法需要传递给它的新字符串,它应该有一个字符串参数。

+0

您确定吗?我在这里谈论一个两点都是正确的情况,这个类需要一个名字,而且这个方法使用相同的名字。 – sramij

+1

当然我很确定。我告诉你的是,你正在混淆两个正交的东西。如果该方法真正在现有名称_property_上运行,那么将它作为名称参数是愚蠢的,因为这可能是_different_名称。如果该方法的工作是设置名称属性_然后_对其进行操作,那么将它赋予新的价值当然是有意义的。 – matt

+0

然后我们回到我的第一点。该方法真正对现有名称属性进行操作,我同意将另一个字符串作为名称参数是愚蠢的。然后,在这种情况下(这是我的问题),谁保证在调用此方法之前将设置name属性?否则,它将没有任何操作。 – sramij