Ich habe eine Auto-synthetisierte readonly
& weak
Eigenschaft:Prevent ARC zu null einer schwachen Ivar direkt nach Zuweisung (in Version baut)
@property (nonatomic, readonly, weak) KTWindowController* windowController;
I die synthetisierte Ivar zuweisen und dann auf ein Array hinzuzufügen:
_windowController = [KTWindowController controller];
[self addSubController:_windowController];
Dies funktioniert in Debug-Builds. Aber ich habe einen Bericht erhalten, der bei der Veröffentlichung (ad hoc) sofort die _windowController
erstellt und dann versucht, nil zu dem Array hinzuzufügen, was die App zum Absturz bringt.
Welche spezifische Einstellung (Optimierungsstufe?) In einem Release-Build (Ad-hoc-Build) ändert dieses Verhalten im Vergleich zu Debug-Builds?
Es scheint mir seltsam, dass dieses Verhalten von Debug zu Release Builds ändern würde. Aber ich konnte dieses Verhalten reproduzieren, und es macht tatsächlich Sinn - nur nicht, wenn es nicht mit dem übereinstimmt, was in Debug-Builds passiert.
Die vorgeschlagene Abhilfe:
KTWindowController* windowController = [KTWindowController controller];
[self addSubController:windowController];
_windowController = windowController;
Andere als eine lokale Variable, wie oben zu sehen ist, was Abhilfe würden Sie in solchen Fällen empfehlen?
Vielleicht ist das eine dumme Frage, aber warum weisen Sie direkt dem ivar zu, anstatt 'self.windowController = [KTWindowController controller]' 'zu verwenden? – bdesham
Die Frage ** ist ** albern: Die Eigenschaft ist readonly. ;) – LearnCocos2D
OK, fair genug ;-) – bdesham