gpt4 book ai didi

iphone - Objective-C - 使用 ARC 分配/初始化对象

转载 作者:行者123 更新时间:2023-11-29 11:13:15 25 4
gpt4 key购买 nike

我想知道我现在是否可以使用 ARC 直接分配、初始化一个 ivar(因为如果我没记错的话,没有 ARC 是不可能的,因为它会泄漏内存否)?

示例(考虑这样声明的 ivar):

@property (nonatomic, strong) NSArray *myArray;

@synthetize myArray = _myArray;

然后做

self.myArray = [[NSArray alloc] initWithObjects:object1, object2, nil]; //I know I could directly use [NSArray arrayWithObjects:...] but that's the purpose of my question 

最佳答案

是的。

使用 alloc/initWithObjects:arrayWithObjects: 的唯一区别是前者留给你一个保留的对象,而第二个没有。如果出于某种原因您想使用前者来初始化属性,您需要添加对 autorelease 的调用以避免泄漏。所以你会这样做:

self.myArray = [[[NSArray alloc] initWithObjects:foo, bar, nil] autorelease];

你是对的,对于 ARC,编译器会为你添加它,所以你现在可以说:

self.myArray = [[NSArray alloc] initWithObjects:foo, bar, nil];

关于iphone - Objective-C - 使用 ARC 分配/初始化对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10552743/

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