iOS - 以编程方式创建UIScrollView,直接赋值与属性

时间:2011-07-22 00:48:41

标签: ios properties uiscrollview instance-variables

从Apples documentation,他们在- (void)loadView中创建一个UIScrollView,如下所示:

- (void)loadView {
    CGRect fullScreenRect=[[UIScreen mainScreen] applicationFrame];
    scrollView=[[UIScrollView alloc] initWithFrame:fullScreenRect];
    scrollView.contentSize=CGSizeMake(320,758);

    // do any further configuration to the scroll view
    // add a view, or views, as a subview of the scroll view.

    // release scrollView as self.view retains it
    self.view=scrollView;
    [scrollView release];
}

所以我理所当然地认为scrollView var是在.h文件中声明的实例变量?为什么他们将scrollView var设置为直接赋值?你不应该使用适当的内存管理(如合成属性)?

我想知道的原因是因为我自己正在UIScrollView创建- (void)loadView。我已经声明了一个UIScrollView属性来通过我的类获取ScrollView的句柄。现在它看起来像这样(并且正在工作)但是我想知道我的代码是否正确,我不喜欢直接分配调用:

- (void)loadView {

    // Setup Scroll View
    // scrollView is a property setup as (nonatomic, retain) UIScrollView *scrollView;

    // Wouldn't it be better if used self.ScrollView instead?
    scrollView = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];

    [scrollView setContentSize:CGSizeMake(1, 1)];
    [scrollView setDelaysContentTouches:NO]; 

    self.view = scrollView;

}

1 个答案:

答案 0 :(得分:1)

但是,内存在此管理 - scrollView不需要保留,因为它由self.view保留。

如果您需要保留对scrollView的引用,那么您需要保留/释放它。但是,如果您的目的不需要保留参考,只需将其分配给self.view,然后释放它,继续您的生活!