我想知道哪个是在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"];
我想知道每一个的优点和缺点,“何时”和“为什么”更好地使用其中一个。
答案 0 :(得分:4)
如果在init
方法的实现中立即需要这些值,则应将参数传递给自定义init
方法。
如果要设置多个属性并且alloc/init
方法本身不需要这些属性,则应使用在调用init
后设置的属性。
很多时候,viewDidLoad
(在视图控制器的情况下)不需要属性,因此使用属性更清晰。您不希望最终使用带有十几个参数的init
方法。