Инициализировать NSMutableArray: [массив NSMutableArray];
Если вы инициализируете NSMutableArray с помощью метода удобства NSArray, как указано выше, вы получаете NSArray или NSMutableArray?
Какие-нибудь последствия?
(я знаю, что NSMutableArray имеет " arrayWithCapacity:, мне просто любопытно)
2 ответа:
Если вы инициализируете его с помощью:
NSMutableArray *array = [NSMutableArray array];
Вы получаете NSMutableArray. Одной из отличительных особенностей Objective-C является то, что методы классов наследуются подклассами.
Итак, в методе класса вы можете сделать что-то вроде этого:
+(id)array { return [[[self alloc] init] autorelease]; }
И
self
будут ссылаться на объект класса, в котором выполняется код (NSArray
илиNSMutableArray
).
Обновление: хотя мой совет "проверить это самостоятельно", как правило, хорошая идея, в этом случае он был немного триггерным. Спасибо Джиму в комментариях за указание на то, что мое предложение ниже не работает хорошо для этих классов, потому что различные формы NSArray все реализованы CoreFoundation toll-free bridging class.
----- Оригинальный Ответ Для Контекста Ниже - - - - -
Самый простой способ ответить на подобный вопрос-это проверить его самому. Попробуйте выделить массив в том виде, который вам был интересен, а затем NSLog из вашего кода:NSLog (@"мы получили%@", NSStringFromClass ([класс theArray]));