オブジェクトが作成されると、ランタイムはすべてのプロパティを nil で自動的に初期化するといつも信じていました。
ただし、App Store のリリース ビルドは、開発中のデバッグ ビルドとは異なります。Xcode は、変数やプロパティに関するさまざまなセキュリティ チェック メカニズムを備えたデバッグ用のより安定したビルドを作成し、クラッシュを防ぎながらコードを肥大化させると聞いています。
配布用にビルドする場合、コンパイラの最適化により、この「不要な」デバッグ コードが取り除かれ、コードが高速になります。
リリースビルドで突如発生した謎のバグを経験したことがあります。しかし今、開発者は私にこれも言いました: リリース ビルドでは、ランタイムはプロパティを nil に設定しません。それらは初期化されていません。手動で行わない限り、それらの値はガベージメモリです。したがって!foobar
、プロパティを nil で初期化しない限り、チェックするのは安全ではありません。
これまでのところ、オブジェクトを設定しない限り、すべてのアプリは常にプロパティが nil であると想定しています。
これは正しいですか、それとも、オブジェクトを作成するときにランタイムがプロパティを nil に初期化しますか?