Этот недавний 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
, он уменьшается. Означает ли это, что если тип идентификатора
, который не является NSObject
или подклассом, добавляется к NSMutableArray
, он должен отвечать, чтобы сохранить и освободить сообщения? Определение id
, похоже, не заставляет это делать. Является ли объективной директивой C то, что любой тип идентификатора
должен отвечать на стандартные сообщения управления памятью?