e.g。 Person
类有一个属性@property (strong, nonatomic) NSString *name;
和两个方法:初始化方法- (instancetype)initWithName:(NSString *)name;
和另一个方法- (void)doSomethingWithName:(NSString *)name;
如下:
- (instancetype)initWithName:(NSString *)name
{
self = [super init];
if (self) {
self.name = name;
[self doSomethingWithName:name];
}
return self;
}
- (void)doSomethingWithName:(NSString *)name
{
NSLog(@"My name is: %@", name)
}
虽然在这种情况下我们将局部变量name
从- initWithName:
传递到- doSomethingWithName:
,但我们可以通过将self.name
传递给{{1}来实现相同的结果}。实际上,我们甚至可以重写- doSomethingWithName:
方法:
- doSomethingWithName:
哪种方法被认为是最佳做法?为什么?
答案 0 :(得分:0)
这两种方法做了不同的事情。
表格
- (void)doSomethingWithName:(NSString *)name
更像是一个全球功能。它需要一个参数并对其做一些事情。
不带参数的表单是实例方法。您要求对象使用其名称执行某些操作。
两者都不比另一方好。这是一个需要/意图的问题。
这就像问厨师“什么更好,用搅拌器或抹刀?”两者都不比另一个好。它们是适合不同任务的不同工具。