Global Regular Class Global Reatable между экземплярами объектов - помощь!
-
03-10-2019 - |
Вопрос
Я только начал изучать цель C, имея небольшой опыт Java, и этот сайт действительно полезен для ответа на нагрузки на мои вопросы, но я ударил проблему, которую не могу достаточно понять. Theres справедливая сумма, которую нужно прочитать по теме, но я не могу найти, где я пошел не так.
Я прочитал это:
Задача C не поддерживает элементы классов данных (т. Е. Данные, которые разделяют все объекты одного класса), однако они могут быть эмулированы с помощью статического модификатора. Например, объявление переменная подсчета Static INT в файле реализации класса сотрудников приведет к тому, что все объекты сотрудников совместно используют единую целочисленную переменную, называемую подсчетом.
Но я, кажется, оказался с этой функциональностью, не пытаясь ... и я не хочу этого!
Сценарий состоит в том, что у меня есть категория UiimageView, в которой я объявляю глобальную переменную (чуть ниже моей линии @implementation), чтобы подсчитать конкретное событие и использовало его в моих новых методах.
@implementation UIImageView (Draggable)
int touchesCount = 0;
// methods ...
Все работает нормально, если у меня есть один UiimageView. Однако, когда я создаю и добавив второй экземпляр UIImageViewView, эта переменная подсчета передается между двумя, давая неожиданное поведение.
Рисунок может быть уместно показать, как я создаю объекты:
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 просмотрами, я в этом случае - это контроль контроллера.
Решение
То, что вы ищете, являются переменными экземпляра, но категории не могут добавить их в интерфейсяблоко:
Обратите внимание, что категория не может объявить дополнительные переменные экземпляра для класса; Включает только методы.
Вы должны использовать наследование вместо:
@interface MyView : UIImageView {
int touchesCount;
}
// ...
@end