Swift 中是否存在 ARC 溢出?

Possibility of ARC overflow in Swift?

Swift 使用 "Automatic Reference Counting" 释放不再被引用因此不再需要的对象。 Swift 语言指南 [1] 声明如下:

Every time you create a new instance of a class, ARC allocates a chunk of memory to store information about that instance. This memory holds information about [...] values of any stored properties associated with that instance.

我假设引用计数存储为整数。 引用计数器是否会溢出? 如果是这种情况,这会对我的程序产生什么影响,仍然被其他人引用的对象是否会被释放?

举个例子:如果计数器是一个无符号的 2 字节整数,那么对象的引用上限(同时仍具有正确的引用计数)将达到 130k 左右。一旦达到上限并且对象再次被引用,这将使计数器递增 1,再次将其设置为 0。

[1] https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AutomaticReferenceCounting.html

NSObject 的 retainCount 是 64 位 OS 上的 64 位无符号整数。它是 32 位 OS 上的 32 位无符号整数。这也是地址的大小 space,因此不可能创建那么多对单个对象的引用并溢出计数。