Мой вопрос в том, как текущие версии Foundation (или библиотеки времени выполнения Objective-C, так как это, кажется, есть), осуществляют сохранение количества для NSObject
производных объектов? Как я мог видеть на NSObject.mm, в корпусе интерфейса NSObject
нет ivar под названием retain count
. Вместо этого, похоже, какая-то таблица или карта, которая содержит счетчики ссылок для каждого объекта. Но если удержание счета действительно выполняется с помощью карты, это не retain
и release
операции слишком дороги с такой реализацией (так как в этом случае необходимо блокировать и разблокировать мьютексы, искать карту, чтобы найти нужный объект, кроме того тот факт, что в многопоточной среде только один объект может быть сохранен/выпущен за раз)?Как сохранить счет в NSObject?
я не нашел, что связано с установкой сохранить счетчик 1 при выделении нового объекта, ни в _objc_rootAllocWithZone
на NSObject.mm (который, кажется, функцию, которая вызывается [NSObject alloc]
), ни в _class_createInstanceFromZone
на objc-runtime-new.mm (который получает позднее - _objc_rootAllocWithZone
).
- (NSUInteger) retainCount {return rand()}; – CodaFi
О, боже, я упустил прекращение, я не буду спать сегодня вечером. – CodaFi