Iphone 在ios中释放内存
在上面的代码中,我应该释放btn,因为我知道我已经分配了它们,以后我需要执行Iphone 在ios中释放内存,iphone,ios,memory-management,uibutton,Iphone,Ios,Memory Management,Uibutton,在上面的代码中,我应该释放btn,因为我知道我已经分配了它们,以后我需要执行 [btn发布]一些地方 UIButton *btn = [[UIButton alloc]init]; 在第二种类型中,我应该释放btn还是btn是一个自动释放的对象,我不必称之为释放本身 如何在第二种类型中释放btn?在第二种类型中,它返回一个自动释放对象,因此您不必担心释放它。在第二种类型中,它返回一个自动释放对象,因此您不必担心释放它。在第二个示例中,您不需要释放按钮[UIButton Button WithT
[btn发布]代码>一些地方
UIButton *btn = [[UIButton alloc]init];
在第二种类型中,我应该释放btn还是btn是一个自动释放的对象,我不必称之为释放本身
如何在第二种类型中释放btn?在第二种类型中,它返回一个自动释放对象,因此您不必担心释放它。在第二种类型中,它返回一个自动释放对象,因此您不必担心释放它。在第二个示例中,您不需要释放按钮<代码>[UIButton Button WithType:][/code>返回自动删除的对象
有一个简单的规则:只有当您alloc
、retain
、copy
或mutableCopy
时,才需要释放
,在第二个示例中,您不需要释放按钮<代码>[UIButton Button WithType:][/code>返回自动删除的对象
有一个简单的规则:只有当您alloc
、retain
、copy
或mutableCopy
时,才需要释放
避免考虑对象是否自动删除。实际上,许多从便利方法返回的对象根本不是自动释放的,例如,它们可能是静态实例
相反,只要想想你是否拥有这个对象。对于名称中包含alloc
、new
或copy
的方法,或者对于通过retain
明确获得所有权的对象,这些意味着您拥有返回的对象,并且您必须通过release
放弃所有权。对于您不拥有的对象,您不必释放它们
内存管理的方法非常简单。将它们记在记忆中,这样的问题的答案将成为第二天性。避免考虑对象是否自动释放。实际上,许多从便利方法返回的对象根本不是自动释放的,例如,它们可能是静态实例
相反,只要想想你是否拥有这个对象。对于名称中包含alloc
、new
或copy
的方法,或者对于通过retain
明确获得所有权的对象,这些意味着您拥有返回的对象,并且您必须通过release
放弃所有权。对于您不拥有的对象,您不必释放它们
内存管理的方法非常简单。记住它们,这样的问题的答案将成为第二天性。第一种情况:
你必须释放它,因为你拥有它
- 当您创建一个对象(new或alloc、copy或mutablecopy)时,它具有
如果保留计数为1,则您拥有它
- 向对象发送retain消息时,其retain计数为
递增1,则您拥有它
第二种情况:
您收到的按钮是从方便的构造函数获得的
“便利构造函数”创建一个对象,该对象通过自动释放消息发送
因此,在第二种情况下,不应松开按钮。只有发送了保留方法,才能发送释放消息。第一种情况:
你必须释放它,因为你拥有它
- 当您创建一个对象(new或alloc、copy或mutablecopy)时,它具有
如果保留计数为1,则您拥有它
- 向对象发送retain消息时,其retain计数为
递增1,则您拥有它
第二种情况:
您收到的按钮是从方便的构造函数获得的
“便利构造函数”创建一个对象,该对象通过自动释放消息发送
因此,在第二种情况下,不应松开按钮。只有发送了保留方法,才能发送释放消息。第二次,您不需要释放按钮,它会自动返回自动释放类型。您只需要在拥有对象时释放该对象(如alloc、new或copy)。第二次,您不需要释放按钮,它会自动返回自动释放类型。您只需要在拥有对象时释放它(如alloc、new或copy)。Apple提到,考虑对象是否自动释放是没有好处的,只考虑对象是否拥有。正如我在自己的回答中提到的,许多方便的方法不会返回自动删除的对象,但仍然是您不拥有的对象。请参见第14页的顶部。Apple已经提到,考虑对象是否自动删除是没有好处的,只考虑对象是否属于您。正如我在自己的回答中提到的,许多便利方法不会返回自动删除的对象,但仍然是您不拥有的对象。请参阅的第14页顶部。您正在讨论一些不一定正确或与此问题相关的实现细节。如果手动创建新的自动释放池(为了在紧循环中管理内存),则自动释放池的消耗速度可能比当前事件循环结束前快。您不应该关心对象何时被释放,而是应该考虑您是否拥有该对象。您正在讨论的一些实现细节不一定是真实的,也不一定与此问题相关。如果手动创建新的自动释放池(为了在紧循环中管理内存),则自动释放池的消耗速度可能比当前事件循环结束前快。您不应该关心对象何时被释放,而是应该考虑是否拥有该对象。
UIButton *btn = [UIButton buttonwithtype:UIButtonTypeRoundrect];