以编程方式创建按钮

时间:2012-02-01 06:05:36

标签: iphone ios uibutton

我已经看到了两种创建按钮的方法。

UIButton *button = [[UIButton alloc]initWithFrame:CGRectMake(10, 220, 150, 30)];

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];

第一种情况是创建按钮对象的常规方法。我已经分配并初始化了一个按钮实例,我必须释放它。我真的很困惑第二种方式。我对此有一些疑问。

  1. 在这种情况下是否创建了按钮实例?
  2. 此按钮的保留计数是多少?
  3. 我应该释放这个按钮吗?

4 个答案:

答案 0 :(得分:7)

希望这会有所帮助:

  1. 是创建了按钮实例。
  2. 保留计数将是您如何添加/保留。
  3. 如果尚未通过alloc创建按钮,则无需释放按钮。

答案 1 :(得分:2)

  

在这种情况下是否创建了按钮实例?

是的,创建了一个实例。

  

此按钮的保留计数是多少?

保留计数可能是一个,否则生命周期就会消除它。

  

我应该释放这个按钮吗?

不,你不应该对象是自动释放的。

答案 2 :(得分:1)

来自:http://cocoadevcentral.com/d/learn_objectivec/

关于本地内存管理:

只有一条规则:如果使用alloc或copy创建对象,请在函数末尾向其发送一个release或autorelease消息。如果以任何其他方式创建对象,则不执行任何操作。

  1. 是创建本地实例
  2. 1,但在功能结束时为0
  3. 不,当函数结束时,对象将被标记为释放,前提是您没有调用retain。

答案 3 :(得分:0)

1.)是的,无论你是分配它还是使用工厂方法,都会创建按钮实例。在两种情况下都会创建按钮实例

2.)当前运行循环/循环的保留计数为1,然后在下一循环中,对象将自动释放。因此retainCount将为0.(注意:NSLogging一个retainCount为0将使应用程序崩溃)

3.)不,您不必释放使用工厂方法创建的按钮,它们会自动释放。