2

我刚刚开始学习具有一点 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。

4

1 回答 1

2

您正在寻找的是实例变量,但类别不能将它们添加到接口Apple

请注意,类别不能为该类声明额外的实例变量;它只包括方法。

您应该改用继承

@interface MyView : UIImageView {
    int touchesCount;
}
// ...
@end
于 2010-09-18T14:25:32.120 回答