纵观苹果的ToolbarSearch例子,我看到他们的视图控制器的搜索栏变量有保有财产,它这样做:应该在viewDidUnload中使用retain属性版本的视图控制器的var?
searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0.0, 0.0, 400.0, 0.0)];
在控制器的dealloc中,搜索栏被释放。但是,它的viewDidUnload不会释放,只是将searchBar变量设置为零。
我以为alloc增加了保留计数,并且变量的retain属性额外增加了计数。如果这是真的,是不是意味着searchBar需要在viewDidUnload中发布?
我曾经想过(显然不正确)合成属性并将其设置为“保留”意味着当您将其设置为某物时,它会增加计数。这是当你做self.searchBar =东西?我认为这样做的意图是综合允许我使用equals语法而不是setVar语法。 – Joey 2011-03-30 23:51:15
@Joey:searchBar = something和self.searchBar =之间有很大区别。后者是调用增变器的语法缩写。它相当于[self setSearchBar:something];合成一个属性只是为你生成-searchBar和-setSearchBar方法。使用'retain'作为属性的属性将在您调用setter时添加一个保留到新对象的调用。所以self.searchBar =东西递增保留计数,而searchBar =东西没有。 – 2011-03-31 00:06:58