Ios 我可以使用ARC吗?

Ios 我可以使用ARC吗?,ios,objective-c,cocoa,memory-management,automatic-ref-counting,Ios,Objective C,Cocoa,Memory Management,Automatic Ref Counting,我正在阅读这本官方指南:我不确定它是指处理引用计数的旧方法,还是只是为了演示它是如何工作的——但应该像访问器那样手动使用保留/释放吗?您不允许在ARC中使用retain。但是,它在后台的工作方式与在没有ARC的情况下相同(如您链接的文档中所述),但是编译器会根据需要添加retain和release调用。你不必处理这个问题 这个设定者: - (void)setCount:(NSNumber *)newCount { [newCount retain]; [_count releas

我正在阅读这本官方指南:我不确定它是指处理引用计数的旧方法,还是只是为了演示它是如何工作的——但应该像访问器那样手动使用保留/释放吗?

您不允许在ARC中使用
retain
。但是,它在后台的工作方式与在没有ARC的情况下相同(如您链接的文档中所述),但是编译器会根据需要添加
retain
release
调用。你不必处理这个问题

这个设定者:

- (void)setCount:(NSNumber *)newCount {
    [newCount retain];
    [_count release];
    // Make the new assignment.
    _count = newCount;
}
使用ARC时,应如下所示:

- (void)setCount:(NSNumber *)newCount {
    // Make the new assignment.
    _count = newCount;
}

不允许对ARC使用
retain
。但是,它在后台的工作方式与在没有ARC的情况下相同(如您链接的文档中所述),但是编译器会根据需要添加
retain
release
调用。你不必处理这个问题

这个设定者:

- (void)setCount:(NSNumber *)newCount {
    [newCount retain];
    [_count release];
    // Make the new assignment.
    _count = newCount;
}
使用ARC时,应如下所示:

- (void)setCount:(NSNumber *)newCount {
    // Make the new assignment.
    _count = newCount;
}

您不能将retain与ARC一起使用,但 通过为单个文件添加-fno objc ARC编译器标志,可以禁用这些文件的ARC


您可以在目标->构建阶段->编译源代码中添加编译器标志。您必须双击编译器标志下行的右列。您也可以通过按住cmd按钮选择文件,然后按enter键打开标志编辑框,将其添加到多个文件中。

您不使用带弧保留,而是使用带弧保留。 通过为单个文件添加-fno objc ARC编译器标志,可以禁用这些文件的ARC


您可以在目标->构建阶段->编译源代码中添加编译器标志。您必须双击编译器标志下行的右列。您还可以通过按住cmd按钮选择文件,然后按enter键打开标志编辑框,将其添加到多个文件中。

+1而且要明确的是,@raistlin,苹果并不建议您编写此代码(因为99%的时候,您使用自动合成的访问器方法),而是向您展示它的功能。从这个角度来看,看到等效的非ARC代码比ARC代码更能说明幕后发生了什么。是的。如果希望在属性更改时执行某些操作,则只需手动实现setter。例如,为了重新绘制视图或重新加载一个表,@raistlin明确地说,苹果并不建议您编写此代码(因为99%的情况下,您使用自动合成的访问器方法),而是向您展示它的功能。从这个角度来看,看到等效的非ARC代码比ARC代码更能说明幕后发生了什么。是的。如果希望在属性更改时执行某些操作,则只需手动实现setter。例如,重新绘制视图或重新加载表。是的,我知道我可以对某些文件禁用ARC。我只是好奇,尽管官方指南中到处都有关于ARC的说明,但苹果的文档中是否有ARC只是为了教育或现实生活的目的。是的,我知道我可以为一些文件禁用ARC。我只是好奇,尽管官方指南中到处都有关于ARC的说明,但苹果的文档中是否有用于教育或现实生活用途的说明。如果你是ARC的新手,那么你应该看看。是的,我知道,只是不确定在官方文档(教育或现实生活)中说明这一点的目的,但感谢链接,将看一看:)如果你是ARC的新手,那么你应该看一看。是的,我知道,只是不确定在官方文件(教育或现实生活)中说明这一点的目的,但感谢链接,将看一看:)