реализован в рантайме • нет таких возможностей, как перегрузка операторов • синтаксические особенности языка превращаются в вызовы Си-функций с указателями в качестве аргументов • Динамическая типизация
[myObject class] – возвращает класс объекта id res = [myObj myMethod]; SEL s = NSSelectorFromString(@"myMethod"); id res = [myObj makeObjectPerformSelector:s];
случаи жизни (Foundation) • Широкий набор классов для интерфейсов (AppKit, UIKit) • Различные API для решения других задач (CoreData, CoreGraphics, CoreAudio, Security, и т.д.)
(KVC & KVO): • непрямой механизм доступа к свойствам объекта или дерева объектов • [myDict valueForKeyPath:@”object.prop1.prop2”] • Аггрегационные функции: • [savingsAccount valueForKeyPath: @"[email protected]"]
на других машинах • “Родной” для Cocoa механизм RPC • theProxy = [[NSConnection rootProxyForConnectionWithRegisteredName: @"com.some.server" host:nil] retain]; • [theProxy getRemoteValForKey:123];