オブジェクトインスタンス間で共有される通常のクラスのグローバル変数 - ヘルプ!

StackOverflow https://stackoverflow.com/questions/3741823

質問

私はちょっとしたJavaの経験を持つ客観的なCを学び始めたばかりで、このサイトは私の質問の負荷に答えるのに本当に役立ちましたが、私はまったく推測することができない問題に見舞われました。トピックについて読むべきかなりの量がありますが、私が間違った場所を見つけることができません。

私はこれを読みました:

目的Cは、クラスデータメンバー(同じクラスのすべてのオブジェクトで共有されるデータ)をサポートしていませんが、静的修飾子を使用してエミュレートすることができます。たとえば、従業員クラスの実装ファイルで静的なINTカウント変数を宣言すると、すべての従業員オブジェクトがCountと呼ばれる単一の整数変数を共有します。

しかし、私は試してみなくこの機能になったようです...そして私はそれを望んでいません!

シナリオは、特定のイベントをカウントし、新しい方法で使用するためにグローバル変数(@implementation行のすぐ下)を宣言しているuiimageViewのカテゴリを持っているということです。

@implementation UIImageView (Draggable)    
int touchesCount = 0;    
// methods ...

私が1つのuiimageviewを持っている場合、すべてが正常に機能します。ただし、UIImageViewの2番目のインスタンスを作成して追加すると、このカウント変数は、予期しない動作を与える2つの間で共有されています。

私がオブジェクトの作成方法を示すことは関連する可能性があると考えてください:

UIImageView *myImageView = [[UIImageView alloc] initWithFrame:myImageRect]; 
UIImageView *myImageView2 = [[UIImageView alloc] initWithFrame:myImageRect];
// ... (create, manipulate and set 2 images to the 2 views)
[self.view addSubview:myImageView];
[self.view addSubview:myImageView2];

それ以外は、私がどこで間違っているのかについての提案はありますか?

ありがとう!

編集: 2つのビューで私がやっていることをもう少し説明するために、この場合はviewcontrollerです。

役に立ちましたか?

解決

あなたが探しているのはインスタンス変数ですが、カテゴリはインターフェイスにそれらを追加することはできませんアップル:

カテゴリは、クラスの追加のインスタンス変数を宣言できないことに注意してください。メソッドのみが含まれています。

使用する必要があります 継承 代わりは:

@interface MyView : UIImageView {
    int touchesCount;
}
// ...
@end
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top