问题标签 [automatic-ref-counting]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1285 浏览

iphone - 非 ARC(自动引用计数)和 ARC 用户的开源

我们有一些开源库,它们通过带有 Xcode 的 git 模块通过代码分发到其他项目中。一些项目将保留显式保留/释放,而其他项目则希望利用自动引用计数。无论如何,在有和没有 ARC 的 Xcode 项目中是否可以编译相同的源代码?如果它被编译成静态库,它会工作吗?

0 投票
3 回答
117 浏览

objective-c - Objective-C 将对象声明为与我声明的完全不同的类

在我编写的一个方法中,我声明了一个类“A”的实例并在其上调用一个方法。在运行时,当方法运行时,我的应用程序崩溃。它说一个无法识别的选择器被发送到一个类“B”的实例,即使我声明了一个“A”的实例。我在某处读到我可能无法正确管理我的内存,因此它将方法发送到另一个类,但我使用的是 ARC,所以这甚至不应该成为问题。帮助将不胜感激!

以及被调用的方法:

0 投票
1 回答
11370 浏览

objective-c - 在 ARC 中清零弱引用

如果我对 Mike Ash 的“归零弱引用”文章的阅读是正确的,那么弱引用就像assign没有 ARC 的引用。但是,如果引用的对象被释放,而不是获得“悬空指针”(意味着指向释放对象的指针),指针被设置为nil.

这是正确的吗,这是否发生在任何标记的属性weakassign(当 ARC 处于活动状态时)?

如果这是正确的,这将消除很多 SIGABRT。

0 投票
1 回答
71713 浏览

objective-c - 自定义 dealloc 和 ARC (Objective-C)

在我的小 iPad 应用程序中,我有一个使用观察者的“切换语言”功能。每个视图控制器在其viewDidLoad:.

updateUi:当用户点击“更改语言”按钮时,新语言将存储在我的模型中,并通知观察者并在其注册对象上调用选择器。

这很好用,除非我在 TabBarController 中有视图控制器。这是因为当标签栏加载时,它从其子控制器获取标签图标而不初始化视图,因此viewDidLoad:不会被调用,因此这些视图控制器不会收到语言更改通知。因此,我将registerObject:调用移至该init方法中。

当我过去viewDidLoad:向我的观察员注册时,我曾经viewDidUnload:取消注册。由于我现在正在注册init,因此取消注册很有意义dealloc

但这是我的问题。当我写:

我收到此错误:

ARC 禁止“dealloc”的显式消息发送

由于我需要调用[super dealloc]以确保正确清理超类,但 ARC 禁止这样做,所以我现在被卡住了。当我的对象快要死去时,还有其他方法可以得到通知吗?

0 投票
3 回答
2883 浏览

objective-c - ARC下的id数组成员实例

我想写这样的东西:

但是编译器抱怨它:

如何在 ARC 下创建 id 数组成员实例?以及如何初始化该数组?使用malloc?新的[]?

我不想使用 NSArray,因为我正在将一个大型库转换为 ARC,这会导致很多工作。

0 投票
1 回答
971 浏览

xcode - IBOutlets 未在 NSViewController 中设置

所以我有一个 NSViewController (MyVC) 设置如下:

现在,当我(通过MyVC *vc = [[MyVC alloc] init];)加载这个 NSViewController 并将其加载到一个窗口中时,我可以适当地看到文本字段。但是,正如上面的粘贴(和几个 BAD_ACCESSes)所暗示的那样,vc.input永远不会正确指向文本字段。

笔记:

  • 该项目正在运行 ARC。
  • 这不是简化或概括。我已经运行了这个确切的代码无济于事。
  • 所有 IBOutlets 都绝对设置得当。
0 投票
2 回答
1329 浏览

memory - 如何在 iOS5 中强制发布?或者有没有更好的方法来用 UILabel 做到这一点?

我正在编写一个相当简单的应用程序,它生成一个线程,该线程最终调用以下方法将 UILabel 放在某个位置。我曾期望 ARC 在方法关闭时清理标签。我错了。:)

有没有办法强制清理这些东西,或者有什么明显的我遗漏的东西?谢谢!

0 投票
2 回答
1304 浏览

iphone - 不同的内存管理 ARC/无 ARC

我必须将简单的 ARC 代码转换为非 ARC。虽然它相对简单,但我错过了实例变量赋值 self.var = xxx,而是写了 var = xxx。

虽然在 ARC 版本中它没有造成任何问题 - 在非 ARC 版本中它肯定会导致崩溃。

这是否意味着实际上可以在没有 self 的情况下在 ARC 中分配实例变量。所以他们得到保留?

谢谢!

ps 学习如何在 ARC 中编程的最佳资源是什么,这样可以避免明显的错误 - 到目前为止,我根本没有发现任何问题,但我很紧张,因为我可能错过了一些东西

0 投票
3 回答
4889 浏览

cocoa-touch - ARC:从委托方法中使用的内部块获取 EXC_BAD_ACCESS

我一定是做错了什么,但是 Automatic Reference Counting 文档并没有给我提示它可能是什么。我正在做的是从委托方法内部调用一个带有块回调的方法。从块内部访问同一个委托会导致访问错误。问题是我正在传递的对象 - loginController将消息发送给它的委托 - 显然没有释放,当我不在块内访问它时,我可以多次调用该方法而不会出现问题。这是我的代码:

NSZombieEnabled 不记录任何内容,并且 gdb 没有可用的堆栈跟踪。我在这里做错了什么?感谢您的任何指点!


编辑:

我认为问题的范围更大——上面的回调是从 NSURLConnectionDelegate 方法调用的(块本身是该委托的强属性,因此 ARC 应该调用 Block_copy())。在这种情况下我需要进行特殊测量吗?

流程(loginController 始终可见):

登录控制器

查看代表

NSURLConnectionDelegate

这就是我获得错误访问权限的地方,但只有当我访问该 loginController 变量时...

0 投票
1 回答
10078 浏览

objective-c - 自动引用计数问题:将非本地对象的地址传递给 __autoreleasing 参数以进行回写

我正在尝试将指针传递给指向方法的指针,但显然 ARC 对我的操作方式存在一些问题。这里有两种方法:

我收到以下错误:

自动引用计数问题:将非本地对象的地址传递给 __autoreleasing 参数以进行回写

在出现以下命令的行上: