我刚刚开始学习具有一点Java经验的目标c,这个网站对回答我的大量问题非常有帮助,但我遇到了一个我无法理解的问题。关于这个话题有很多东西要读,但我找不到我出错的地方。
我读到了这个:
Objective C不支持类数据成员(即同一类的所有对象共享的数据),但是,可以通过使用static修饰符来模拟它们。例如,在Employee类的实现文件中声明一个静态int count变量将导致所有Employee对象共享一个名为count的整数变量。
但我似乎最终没有尝试这个功能......我不想要它!
场景是我有一个UIImageView类别,我在其中声明一个全局变量(就在我的@implementation行下面)来计算一个特定事件并将它用于我的新方法。
@implementation UIImageView (Draggable)
int touchesCount = 0;
// methods ...
如果我有一个UIImageView,一切正常。但是,当我创建并添加UIImageView的第二个实例时,这两个计数变量将在两者之间共享,从而产生意外行为。
图可能与展示我如何创建对象有关:
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个视图的更多了解,在这种情况下,self是一个ViewController。
答案 0 :(得分:2)
您要查找的是实例变量,但类别无法将这些变量添加到接口 Apple :
请注意,类别不能为类声明其他实例变量;它只包括方法。
您应该使用inheritance代替:
@interface MyView : UIImageView {
int touchesCount;
}
// ...
@end