如何确保在没有警告的情况下调用viewDidLoad?

时间:2013-03-26 07:34:11

标签: objective-c xcode4.5

BGLogin * login = [[BGLogin alloc]init];

[nav pushViewController:login animated:YES];
login.view; //access it once to trigger didload
NSAssert(login.navigationItem==login.navigationItemAtDidload,@"They should be the same");//View didload isn't called yet here.
NSAssert(login.navigationController == nav,@"The navigation controller should be the same");
NSAssert(nav.navigationBar.topItem==login.navigationItem,@"We just push our self so our stuff should be on top");

这是简单的代码。但是,如果我不执行login.view,则不会首先调用viewDidLoad。如果我登录.view,则会收到一条警告,表示没有使用login.view的值。

那我该怎么办?

2 个答案:

答案 0 :(得分:2)

如果您不关心返回值,则不要使用属性访问器语法(login.view)。像常规方法一样调用getter:[login view]

答案 1 :(得分:1)

如果您只是想使用login.view;来调用viewDidLoad,我认为您最好在BGLogininit方法中添加一些代码。

如:

- (id)init
{
    // your code

    self.view.tag = 0;
    return self;
}

或者您可以将login.view;更改为login.view.tag = 0;

它会调用viewDidLoad,但我认为它不会更好,但它会对你有用,也许有人有更好的方法来处理它