Мне любопытно, как внутри работает сохранение/освобождение. На первый взгляд кажется, что есть целое число, связанное с каждым экземпляром NSObject
, которое увеличивается и уменьшается при вызове -retain
и -release
соответственно.
Но, взглянув на NSObject
, единственная переменная экземпляра, которая у него есть, — это переменная isa
для определения типа его класса.
Так где же хранятся счетчики сохранения для отдельных объектов? Не то, чтобы я собирался с этим возиться, а просто для собственного назидания.
Хранится ли он с NSObject
, но скрыт в некоторых деталях реализации Objective C? Если это так, то это кажется мне плохим дизайном. Один должен иметь возможность создавать свой собственный корневой класс и управлять своим собственным подсчетом удержания/освобождения аналогичным образом (не то, чтобы это была хорошая идея--нужно иметь очень веская причина не использоватьNSObject
).