2011-12-15 8 views
2

У меня есть UIView, который имеет много экземпляров, и каждый из них имеет UIRecognizer.Получить все экземпляры класса в объекте c?

Когда он используется, я хочу удалить все распознаватели других.

Что я хочу, чтобы получить все экземпляры класса и удалить их распознавания.

Я знаю ManagedObjects имеет [Entity allObjects];

Как я могу создать свой «все объекты» метод класса?

ответ

5

У меня есть две идеи:

1/Создать класс массив со всеми экземплярами static NSArray* instances;, зарегистрировать их при инициализации, UNREGISTER когда deallocating. Массив должен иметь только слабые ссылки, иначе они никогда не будут освобождены.

2/NSNotification. Все экземпляры могут ждать уведомления, и если вы нажмете, вы отправите уведомление.

+0

Спасибо, что это действительно полезно – shannoga

-1

Если они все подземелья одного и того же вида, вы можете перебрать parentView.subviews и найти их таким образом. Что-то вроде этого:

for (UIView *v in parentView.subviews) { 
    if ([v isKindOfClass:[MyViewClass class]]) { 
     // remove recognizer here 
    } 
} 

Другой, более эффективный, вариант должен был бы иметь флаг в контроллере представления, которые вы установили, когда первый распознаватель срабатывает и использовать для короткого замыкания любых будущих вызовов обработчика распознаватель. Что-то вроде этого:

@property (nonatomic) BOOL shouldRespondToEvent; 
@synthesize shouldRespondToEvent=_shouldRespondToEvent; 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.shouldRespondToEvent = YES; 
    // other viewDidLoad stuff here 
} 

- (void)gestureHandler:(UIGestureRecognizer*)recognizer { 
    if (!self.shouldRespondToEvent) 
     return; 
    self.shouldRespondToEvent = NO; 
    // rest of handler code here 
} 
0

Если вам просто нужно найти все экземпляры для целей отладки, вы можете использовать инструмент Allocations и изменить Recorded Types только на свой класс. Это даст вам список всех ваших объектов. Затем вы можете взаимодействовать с ними, используя lldb, используя свой адрес.

Смежные вопросы