Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 在ios中释放内存_Iphone_Ios_Memory Management_Uibutton - Fatal编程技术网

Iphone 在ios中释放内存

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,因为我知道我已经分配了它们,以后我需要执行
[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];