Определение типа устройства
Иногда необходимо сделать так, чтобы приложение вело себя по разному в зависимости от того, на каком устройстве запущено (выводить разные нотификации, делать различные опции для разных устройств и т.д.).
Генерация случайных чисел
Язык Objective-C не позволят генерировать случайные числа, так как в нем нет класса с методом, для этого. Для генерации случайных чисел нам подойдет язык C.
В языке C существует несколько функций для генерации случайных чисел: rand(), srand(), random(), srandom(), arc4random().
Class objects и Objective-C runtime
При компиляции программы на Objective-C компилятор для каждого введенного класса автоматически создает так называемый class object — полноценный объект, содержащий в себе всю информацию о данном классе, включая название, суперкласс, список методов и instance-переменных.
Категории
Язык Objective-C обладает возможностью добавлять новые методы к уже существующим классам. Аналогичной возможностью обладает язык Ruby, C#, JavaScript и другие. При этом не требуется исходников класса и добавленные методы автоматически становятся доступными всем классам, унаследованным от изменяемого. Так можно добавить новый метод классу NSObject и этот метод автоматически добавится во все остальные классы.
Создание и уничтожение объектов
В самом языке Objective-C нет специальных команд для создания и уничтожения объектов (подобных new и delete). Эта задача ложится на runtime-библиотеку и реализуется при помощи механизма посылки сообщений.
Синхронизация
Язык Objective-C поддерживает синхронизацию для многопоточных приложений. При помощи директивы @synchronized () можно защитить фрагмент кода от одновременного выполнения сразу несколькими потоками.
Обработка исключений
В языке Objective-C поддерживается обработка исключений, очень похожая на используемую в языках C++ и Java.
Протоколы
Язык Objective-C содержит полноценную поддержку протоколов(в С++ это чисто абстрактный класс, который также иногда принято называть интерфейсом). Протокол представляет из себя просто список описаний методов. Объект реализует протокол, если он содержит реализации всех методов, описанных в протоколе.

