Чем NSArray отличается от Swift Array?
Главные различия
- Семантика.
Array— struct, value-тип с copy-on-write;NSArray— класс, ссылочный тип. Неизменяемость уNSArray— на уровне класса (NSArrayvsNSMutableArray), уArray— на уровне переменной (letvsvar). - Типизация.
Array<Element>— дженерик, хранит любые типы, включая структуры и enum.NSArrayхранит только объекты (AnyObject); Swift-структуры при бриджинге боксятся (Int→NSNumber,String→NSString, своя struct →_SwiftValue). - Потокобезопасность. Обе не потокобезопасны при мутации, но
Arrayкак value-тип безопасно читать из нескольких потоков (нет общего мутируемого состояния);NSMutableArray— общий объект. - API.
NSArray— Foundation-методы (firstObject,objectAtIndex, KVC/KVOarrayController),Array— протоколыCollection(map,filter,lazy, slices).
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep