Xcode 4.4 Xcode 4.3プロジェクトでのauto @synthesize
-
13-12-2019 - |
質問
それはそれほど単純です。
ランニングライオン
- Xcode 4.4にアップグレードしたばかりの
- 最新のXcode 4.3プロジェクトファイル をロードしました
- コードの1つの@synthesize行をコメントアウトしました
- とエラーがたくさんありました。:(
Verified Compilerは 'llvm 4.0'に設定されています。
それから私は同じテストをしましたが、Xcode 4.4内に新しいプロジェクトを作成しました。AUTO @SYNTHESIZEは4.4プロジェクト内で機能します。
auto @synthesize もコードに追加された new プロパティで動作しているようです。しかし、既存の古いものはエラーを生成します。
他の誰かがこれを経験しますか? 私がチェックする必要がある他のもの?
本当に自動生成機能が機能したい。
ありがとう。
解決
エラーは、プロパティを宣言する方法ではなく、それを使用する方法ではありません。
自動合成プロパティデフォルトでの最先端のアンダースコアを持つバッキングストアを作成します。
SOは、
として宣言されているプロパティがある場合には、コード内です。@property (nonatomic, strong) UILabel *sectorLabel;
.
とあなたは自動的にシステム化 - このようなものは、コンパイラによって自動生成されています:
@synthesize sectorLabel = _sectorLabel;
.
今すぐアクセスできる:
self.sectorLabel;
.
または、バッキングストアに直接アクセスできます。
_sectorLabel;
. 他のヒント
解決しました!
だから私がしたことです。
ViewController.h
@interface ViewController : UIViewController
// Public:
@property (nonatomic, strong) UILabel *sectorLabel;
@end
.
ViewController.m
@implementation ViewController
//@synthesize sectorLabel;
.
とこのエラーが表示されました。
ViewController.m:48:2:宣言されていない識別子 'sectorLabel'の使用。した あなたは '_sectorLabel'を意味しますか?
コードを変更した瞬間を解決しました:
self.sectorLabel
.
Xcode 4.3が「自己」を持たずにまとめて罰金で働きました。キーワード。しかし、Xcode 4.4はそれについてもっと厳格になったようです。
受け入れられた答えの問題は、self.propertyを追加することによってあなたがあなたのコードの動作を変更したばかりです。
IVAR対プロパティへのアクセスは2つの異なるものです。正しい答えは、アンダースコアを追加することによってIVARを正しく使用するようにコードを変更することです。
これはXcodeのデフォルトのプロパティ合成への変更についての厳密性についてではありません。また、ほとんどのスタイルのガイドでは、Appleが_ivarの名前を妨げるので、ウィンドウを推測します。
私のコードでは私は自己だけを使います。プロパティgetterとsetterを通してアクセスするつもりです。この問題について既存のコードを変更しないでください。