我刚刚开始学习具有一些Java经验的目标C,这个网站对回答我的问题的负担确实很有帮助,但是我已经遇到了一个问题,我无法完全理解。关于该主题的内容有很多值得阅读的内容,但我找不到我出了问题的地方。

我读了:

目标C不支持类数据成员(即同一类的所有对象共享的数据),但是,可以通过使用静态修饰符来模拟它们。例如,在员工类实现文件中声明静态int计数变量将导致所有员工对象共享一个称为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];

除此之外,关于我可能出错的任何建议吗?

谢谢!

编辑: 为了说明我对这两种视图所做的事情,在这种情况下,自我是一个ViewController。

有帮助吗?

解决方案

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

请注意,类别无法声明类的其他实例变量;它仅包括方法。

你应该使用 遗产 反而:

@interface MyView : UIImageView {
    int touchesCount;
}
// ...
@end
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top