Можешь объяснить ключевые различия между категориями и расширениями в Objective-C, особенно в отношении их возможностей для добавления методов и свойств к существующим классам? — ДейлиПреп