私はこれをビューオブジェクトのヘッダーファイルに入れようとしました:
@property (nonatomic) UIColor color;
このビューで線を描画する色を保存します。
Xcodeでは、次の行にエラーが表示されます。
インターフェイスタイプを静的に割り当てることはできません
それはどういう意味ですか、どうすればよいですか?
編集:
*を追加しましたが、合成の時点で次のように述べました。
ARCは、未指定の所有権またはストレージ属性を持つObjective Cオブジェクトのプロパティの合成を禁止していますか?
変数はオブジェクト型用であり、ポインタとして宣言する必要があります。
@property (nonatomic) UIColor * color; // Note the asterisk
この場合の「静的に割り当てられた」とは、そのオブジェクトのメモリがコンパイル時に割り当てられたことを意味します。ただし、Obj-Cのすべてのオブジェクトは実行時に割り当てられ、ポインターを介してアクセスされます。
「インターフェース型」は、コンパイラにとって意味のある技術的に過度の用語であり、ここではそれほど重要ではありません。これは、UIColor
がinterfaceを表し、コンパイラが変数color
と対話することを期待していることを意味します。指すオブジェクトの実際のタイプは異なる場合があります( class cluster like NSString
など)。
問題は、次のように、ポインターを介した参照によってのみObjective-Cオブジェクトにアクセスできることです。
UIColor *color;
次のように、「裸の」オブジェクトを持つことはできません。
UIColor color;
そのため、解決策は、コードにアスタリスクを挿入することです(おそらくこれを行うつもりでしたが、バグは単なるタイプミスです)。
UIColor
ポインターをそのように宣言し、ARCまたはMRRのどちらを使用しているかに応じて、retain/strongを追加する必要があります。
@property (nonatomic, strong) UIColor *color;