自定义初始化或公共属性在viewControllers之间发送参数的最佳方法是什么

时间:2014-02-21 15:56:54

标签: ios objective-c uiviewcontroller init

我想知道哪个是在viewControllers之间发送参数的最佳方法。我知道有两种可能性,在init调用后传递公共属性中的参数。

ViewController *vc = [ViewController alloc] init];
vc.propertyOne = @"whatever";
vc.propertyTwo = @"whatever2";

或者创建一个新的自定义初始化,如

initWithProperty:(NSString *)prperty1 andPropertyTwo:(NSString *)property2 
{
  self = [super init];
    if (self) {
        self.propertyOne = prperty1;
        self.propertyTwo = property2;
    }
    return self;

}

ViewController *vc = [[ViewController alloc] initWithProperty:@"whatever andPropertyTwo:@"xxxx"];

我想知道每一个的优点和缺点,“何时”和“为什么”更好地使用其中一个。

1 个答案:

答案 0 :(得分:4)

如果在init方法的实现中立即需要这些值,则应将参数传递给自定义init方法。

如果要设置多个属性并且alloc/init方法本身不需要这些属性,则应使用在调用init后设置的属性。

很多时候,viewDidLoad(在视图控制器的情况下)不需要属性,因此使用属性更清晰。您不希望最终使用带有十几个参数的init方法。