Найти все элементы управления типа в UIView

Я ищу способ автоматически локализовать текст на кнопках / текстовых полях и т. Д., И для этого метода мне нужно найти все (например) UIButton в UIView.

Я пробовал следующие 2 метода, но они оба работают нет работы, как я хочу, чтобы они работали:

for (UIView* subView in self.view.subviews)
{
    NSLog(@"object class : %@", [subView class]);

    if ([subView isMemberOfClass:[UIButton class]])
        NSLog(@"Button found!");
}

Проблема с этим фрагментом кода в том, что RoundedRectButton не соответствует классу UIButton, хотя на самом деле это просто UIButton.

Я также пробовал следующее:

for (UIButton* button in self.view.subviews)
{
// Do my stuff
}

Но глупо то, что какао-touch на самом деле просто перечисляет все подпредставления в этом цикле for (также UITextFields и т. Д.).

Есть ли способ на самом деле просто получить все UIButton из представления? Или мне действительно нужно найти элементы управления, глядя на их селекторы. после каждого жизненного цикла проекта мы проводим разборку вручную и пытаемся освободить все ссылки на ViewModels. Для подписок на события с Unity мы используем слабые ссылки. Итак, мы предполагаем, что после удаления мы можем вызвать GC Collect, чтобы все объекты мусора были собраны сборщиком мусора. У нас есть другой вариант ручной отмены подписки на все события, но мы предпочитаем сборку мусора, потому что она очистит для нас около 200 МБ, что облегчит загрузку нового проекта.

В одном случае мы наблюдаем это, если я позвоню GC.Collect только один раз, его ссылка еще какое-то время остается в памяти.

GC.Collect();
GC.WaitForPendingFinalizers(); 

Но если я попытаюсь вызвать GC дважды подряд, он все хорошо очистит.

GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
GC.WaitForPendingFinalizers();

Любые мысли или указатели будут очень признательны.

] Обновление:

В классе не определены финализаторы.

Теперь я также рассматриваю случай, в котором этот объект упоминается в другом объекте, который может иметь финализатор. В нашей структуре финализатор есть только для DBProvider, так что я не думаю, что даже это так.

10
задан Nitin Midha 30 September 2010 в 13:04
поделиться