gpt4 book ai didi

iphone - 下面的代码执行时会发生什么? Ball *ball = [[[[Ball alloc] init] autorelease] autorelease];

转载 作者:太空狗 更新时间:2023-10-30 03:25:08 24 4
gpt4 key购买 nike

执行下面的代码会发生什么?

Ball *ball = [[[[Ball alloc] init] autorelease] autorelease];

最佳答案

让我们分解一下:

[Ball alloc]:这会创建一个我们拥有的 Ball 对象(因此需要释放)。

[[Ball alloc] init]:这会初始化我们刚刚创建的 Ball 对象。

[[[Ball alloc] init] autorelease]:这会将 Ball 添加到当前的自动释放池中,因此它将在该池耗尽时释放。这是正确的做法,例如,如果我们要从方法中返回 Ball。

[[[[Ball alloc] init] autorelease] autorelease]:这会再次自动释放 Ball 对象。这是 100% 错误的。 alloc 是我们需要平衡的唯一所有权声明,因此 Ball 现在将被释放太多次。这可能会以多种方式表现出来,但它可能只会崩溃。

关于iphone - 下面的代码执行时会发生什么? Ball *ball = [[[[Ball alloc] init] autorelease] autorelease];,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5711360/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com