Yep, ce sont infinies boucles récursives. C'est parce que
self.season = s;
qui se traduit par le compilateur dans
[self setSeason:s];
et
return self.season;
est traduit en
return [self season];
Se débarrasser de la dot-accesseur self.
et votre code sera correct.
Cette syntaxe, cependant, peut être source de confusion étant donné que votre propriété season
et votre variable season
partagent le même nom (bien que Xcode va un peu diminuer la confusion par la coloration de ces entités différemment). Il est possible de modifier explicitement votre nom de variable par écrit
@synthesize season = _season;
ou, mieux encore, d'omettre l' @synthesize
directive complètement. Le moderne Objective-C compilateur va automatiquement synthétiser les méthodes d'accès et de la variable d'instance pour vous.