发布,Malloc和Nil是一个对象?

时间:2011-05-30 07:41:59

标签: ios objective-c memory-management null

这是处理记忆的正确方法吗?

方法1:没有崩溃

 UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(220.0f, 7.0f, 57.0f, 35.0f)] ;

    button = nil;

    [button release];

方法2:崩溃

 UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(220.0f, 7.0f, 57.0f, 35.0f)] ;

   [button release];

   button = nil;

4 个答案:

答案 0 :(得分:1)

无需将保存已分配对象的变量设置为nil。如果您不再需要它,请释放它。就是这样。

答案 1 :(得分:1)

第一个不正确,以及内存泄漏的情况。

我们大多数人都使用第二种方法,它不应该崩溃,

使用方法#2发布相关代码。

答案 2 :(得分:0)

为什么在 button = nil; 之后将 [button release]; 按钮值设置为nil你不需要这样做只需要 [button release]; ,你的按钮就会被释放而不会有任何泄漏。

答案 3 :(得分:0)

两者都不正确。您应该使用类方法buttonWithType:来构造按钮。它将根据您的指定设置类型。不应直接分配/删除按钮。 (也许这就是崩溃所处的地方,尽管不应该这样)

class方法将返回一个自动释放的对象,因此你不能释放它。

尽管如此(与其他对象和普通的alloc / init一样),第二种方式是正确的;第一次泄漏。