Синтезированные переменные экземпляра генерируются как частные вместо защищенных?

С недавних времен выполнения в iOS мы можем определить свойства, которые будут генерировать методы доступа для переменных экземпляра. Насколько я понимаю, необязательно объявлять используемую переменную экземпляра, поскольку это будет сделано автоматически для нас.

Например, если я напишу:

@interface MyFirstClass
@property (readonly, nonatomic) int size; 
@end

и в .м

@implementation MyFirstClass
@synthesize size;
@end

Затем для меня будет добавлена переменная экземпляра с именем «size» и будет реализован метод с именем «- (int) size».

Проблема в том, что когда я создаю второй класс MySecondClass, который является подклассом MyFirstClass, кажется, что я не могу получить доступ к переменной размера экземпляра в этом подклассе:

@interface MySecondClass : MyFirstClass
@end

@implementation MySecondClass
- (id)init {
    if (self = [super init]) {
        size = 10;  // this yields and error
    }
    return self;
}
@end

Являются ли автоматически созданные переменные экземпляра закрытыми? Есть ли возможность установить их как защищенные, чтобы я мог получить к ним доступ в подклассах? Я знаю, что есть возможность объявить переменную экземпляра самостоятельно, но мне просто интересно ...

С таким суперклассом это работает: (Это потому, что оно явно объявлено защищенным?)

@interface MyFirstClass {
    int size;  // defined expressly and used as @protected
}
@property (readonly, nonatomic) int size;
@end

Спасибо за помощь!! Николя.

Ответы на вопрос(2)

Ваш ответ на вопрос