Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 在对象实例之间共享的常规类全局变量-帮助!_Objective C_Global Variables_Categories_Data Members - Fatal编程技术网

Objective c 在对象实例之间共享的常规类全局变量-帮助!

Objective c 在对象实例之间共享的常规类全局变量-帮助!,objective-c,global-variables,categories,data-members,Objective C,Global Variables,Categories,Data Members,我刚刚开始学习objective c,有一点Java经验,这个网站对于回答我的大量问题非常有帮助,但我遇到了一个我不能完全理解的问题。关于这个话题,有相当多的文章要读,但我不太清楚哪里出了错 我读到: 目标C不支持类数据成员(即由同一类的所有对象共享的数据),但是,可以通过使用静态修改器来模拟它们。例如,在Employee类的实现文件中声明静态int count变量将导致所有Employee对象共享一个名为count的整数变量 但我似乎没有尝试就拥有了这个功能。。。我不想要它 场景是,我有一个U

我刚刚开始学习objective c,有一点Java经验,这个网站对于回答我的大量问题非常有帮助,但我遇到了一个我不能完全理解的问题。关于这个话题,有相当多的文章要读,但我不太清楚哪里出了错

我读到:

目标C不支持类数据成员(即由同一类的所有对象共享的数据),但是,可以通过使用静态修改器来模拟它们。例如,在Employee类的实现文件中声明静态int count变量将导致所有Employee对象共享一个名为count的整数变量

但我似乎没有尝试就拥有了这个功能。。。我不想要它

场景是,我有一个UIImageView类别,其中我声明了一个全局变量(就在@implementation行下方),以计算特定事件,并将其用于我的新方法中

@implementation UIImageView (Draggable)    
int touchesCount = 0;    
// methods ...
如果我只有一个视图,一切都正常。但是,当我创建并添加UIImageView的第二个实例时,这一计数变量将在两个实例之间共享,从而产生意外行为

图1显示如何创建对象可能与此相关:

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];
除此之外,还有什么关于我可能出错的建议吗

谢谢


编辑:为了进一步说明我对这两个视图所做的操作,在本例中,self是一个ViewController。

您要查找的是实例变量,但类别无法将它们添加到界面:

请注意,类别不能为类声明其他实例变量;它只包括方法

您应该改为使用:


我已经按照你的建议修改了我的代码,现在它正在按预期工作。谢谢你的帮助。
@interface MyView : UIImageView {
    int touchesCount;
}
// ...
@end