Это недавнее обсуждение SO меня смутило. Прототипом NSMutableArray для addObject:
является
- (void)addObject:(id)anObject
и id
определяется в objc.h как
typedef struct objc_class *Class;
typedef struct objc_object {
Class isa;
} *id;
Когда я добавляю NSObject или подкласс к NSMutableArray
, его счет сохранения увеличивается, а когда я удаляю его из NSMutableArray
, он уменьшается. Означает ли это, что если в NSMutableArray
добавлен id type
, который не является NSObject
или подклассом, он должен отвечать на сохранение и выпуск сообщений? Определение id
, по-видимому, не приводит к этому. Является ли это объективной директивой C, что любой id type
должен отвечать на стандартные сообщения управления памятью?