gpt4 book ai didi

objective-c - 带有 ARC 的集群初始值设定项

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

通过这个解析document on class clusters , NSNumber 实现 initWithChar: 的方式大致如下:

- (id)initWithChar:(char)c
{
[self release];
return [[__NSCharNumber alloc] initWithChar:c];
}

同样,您可以使用此模式从 Nib 初始化 View :

- (id)initWithFrame:(CGRect)frame
{
id realSelf = [[self class] nib] instantiateWithOwner:nil options:nil][0];
realSelf.frame = frame;
[self release];
return realSelf;
}

我想知道,在这些情况下,ARC 是否管理未返回的 self 的释放?它记录在任何地方吗?

最佳答案

找到详情in the clang documentation .

init 隐式使用了 __attribute__((ns_consumes_self)) 属性,这意味着当 self 被定义为 __strong id self,初始赋值不执行保留。这意味着一旦 self 被重新分配或函数终止,self 将使用标准的强规则被释放。

为了获得 +1,有一个隐式的 __attribute((ns_returns_retained)) 可以防止返回的对象在最后被释放。

在高层次上,ARC 计划在函数结束时额外释放一次 self 的初始值,同时保留返回值,维持其 +1 输出。

关于objective-c - 带有 ARC 的集群初始值设定项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18965163/

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