2011-03-07 53 views
0
创建的控件

我使用IB创建了一些UIView对象并使用IBOutlet链接到我的代码。
以下部分样本:如何释放由ib

1. IBOutlet UIView *view1; 

2. IBOutlet UIView *view1; @property(retain) UIView *view1; 

3. UIView *view1 ; @property(retain) IBOutlet UIView *view1; 

有什么区别?我应该release他们手动?
感谢您的帮助。

回答

1

为Xcode的标识从财产申报笔尖的控制,而不是从内部类的声明,您应该手动删除它....

你的第三个语句将正常工作......。

(在A面类)

IBOutlet UIView *view1; 

界面生成可能是因为它被声明只在类中不会承认它作为IBOutlet中。 (类变量是受保护)

IBOutlet UIView *view1; @property(retain) UIView *view1; 

界面生成器,因为它是唯一的声明里面的类可能不会将其识别为IBOutlet中。 (类变量受保护)

3. UIView *view1 ; @property(retain) IBOutlet UIView *view1; 

正确的方式界面生成器会识别它。它会显示它,当你连接你的接口的引用插座生成器

+0

实际上,他们所有的工作,所以我很困惑 – ywss 2011-03-07 07:13:54

0

您需要手动释放所有IBOutlets的

deallocunload设置为零。

-1

嗨,你可以释放它们在dealloc方法手动。

- (void)dealloc { 
    [view1 release]; 
    [view2 release]; 
    [super dealloc]; 

} 
+2

,一定不要调用[超级的dealloc]第一。这总是最后。你拆掉你的子类的状态,然后*让对象被销毁。 – 2011-03-07 06:50:36