Я считаю, что это корректное поведение компилятора.
Во втором примере вы используете две категории продолжения класса с одним и тем же именем ()
, чтобы дважды объявить одно и то же свойство. Это фактически то же самое, что дважды объявлять одно и то же имя свойства в одном и том же расширении.
Обратите внимание, что это отличается от первого примера, в котором свойство сначала объявляется в заголовке , а затем повторно объявляется в единственной категории продолжения класса с именем ()
.
Если я прав, ответ состоит в том, чтобы пометить расширение класса '+ private' именем, например (Private)
вместо ()
:
@interface ClassWithPrivateImmutableInternallyMutableProperty(Private)
А также, если у вас есть реализация для частного расширения:
@implementation ClassWithPrivateImmutableInternallyMutableProperty(Private)
Надеюсь, это поможет!