クラスAにはUIImageがあります。静的変数の使用が正しくありませんか?
クラスBがクラスBがインスタンス化される
前にタイプAのクラスに静的な参照を持つ、私はクラスAのインスタンスを割り当てるために、クラスBの静的メソッドを呼び出したい
+ (void)setClassAReference:(ClassA*)classA
{
classA_ = classA;
}
これは可能ですか?
私は自分の現在のプロジェクトを掘り下げる前に、サンプル値を作成し、整数値を設定してから、Bをインスタンス化して保存された値を保持し、その値にアクセスできるようにしました。
しかし、私の現在のプロジェクトでは、XCodeのは、私は整数値を渡すことができるようにすることを拒否:クラスAで
は非静的メソッド:
- (UIImage*)imageWithIdentifier:(ImageIdentifier)identifier; // identifier is enum type
クラスBがインスタンス化された後、私がしようAのメソッドを呼び出す:
UIImage *img = [classA_ imageWithIdentifier:ImageIdentifier_Foo];
しかし、暗黙的な変換の警告が表示されます。自動補完は(ImageIdentifier)の代わりに(ID)を表示します。私はすべてのメソッドシグネチャを三重にチェックしており、それらはすべてenum型を使用しています。
私は静的変数を間違って使用していますか、別の問題がありますか?私はシングルトンを使うことができることを知っていますが、私は可能でない方がよいです。
私はここに列挙型の宣言を追加している:*無実を保護するために変更
typedef enum
{
ImageIdentifier_Foo = 0,
ImageIdentifier_Bar
} ImageIdentifier;
*実名を。
なぜ、 'class'' B'は 'B'の_instance_が作成される前に 'A'の_instance_への参照を持つ必要がありますか? 'B'のすべてのインスタンスは' A'の_same_インスタンスを持ちます。 –
'A'は、 'B'のいくつかのサブクラスによって使用されるいくつかの異なるイメージを保持します。私はクラスを再利用できるようにしたいので、各アプリは異なる画像名を持つかもしれません。私は、各サブクラスが静的メソッドで一度だけ送信することによって、作成されるたびに同じイメージ名を送ることを避けたいと思います。 – TigerCoding