Да, это бесконечные рекурсивные циклы. Это потому что
self.season = s;
переводится компилятором в
[self setSeason:s];
и
return self.season;
переведено на
return [self season];
Избавьтесь от dot-accessor self.
и ваш код будет правильным.
Однако этот синтаксис может сбивать с толку, учитывая, что ваше свойство season
и ваша переменная season
имеют одно и то же имя (хотя Xcode несколько уменьшит путаницу, если по-разному раскрасить эти объекты). Можно явно изменить имя переменной, написав
@synthesize season = _season;
или, что еще лучше, пропустите директиву @synthesize
. Современный компилятор Objective-C автоматически синтезирует для вас методы доступа и переменную экземпляра.