Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Objective-C

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
andrei0077
6 / 6 / 1
Регистрация: 23.06.2011
Сообщений: 92
#1

hide или removeFromSuperview - Objective-C

06.03.2012, 14:47. Просмотров 1532. Ответов 9
Метки нет (Все метки)

Добрый день! Я пишу приложение с несколькими видами. При переходе с одного на другой, их приходится то скрывать ,то добавлять. Какой способ лучше для этого использовать, чтоб съэкономить память приложения, hide или removeFromSuperview ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.03.2012, 14:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос hide или removeFromSuperview (Objective-C):

SplitView - hide Detail & show Master in Portrait - Программирование iOS
Привет! Помогите, пожалуйста, советом, как можно заставить SplitViewController в ландшафтной ориентации вести себя "как обычно", а в...

Аналог Hide Folders (Скрытие/блокировка папок или отдельных файлов) - C++ Builder
Ребят, подскажите куда копать. Хочу создать свою программу для скрытия/блокировки папок. Hide Folders это делает как-то средствами...

Hide - Visual Basic
как можно сделать,что бы при нажатии на кнопку,форма пряталась,что бы её даже в трее не было видно,а вызывалась по нажатию определённых...

Hide() - jQuery
Навесил на селект событие, при клике прятать его первый дочерний элемент методом hide(). при этом происходит следующее: нижнее значение...

Hide - Visual Basic .NET
как можно сделать,что бы при нажатии на кнопку,форма пряталась,что бы её даже в трее не было видно,а вызывалась по нажатию определённых...

Hide and cookie - jQuery
В общем, просто решил протестировать,и не получилось.В общем мне нужно если set_menu(в кукисе) если равна единице - срабатывал hide. Вот...

9
zulkis
682 / 609 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
07.03.2012, 08:20 #2
Это ну очень неважно. Вы даже на iPhone 1го поколения этим ничего толком не улучшите. Используйте эти 2 метода в зависимости от того, что вам реально нужно сделать, удалить вьюху из массива subview, либо просто её скрыть, не меняя иерархии.
1
Adem
6 / 6 / 0
Регистрация: 17.04.2009
Сообщений: 34
08.03.2012, 09:39 #3
Цитата Сообщение от zulkis Посмотреть сообщение
Это ну очень неважно. Вы даже на iPhone 1го поколения этим ничего толком не улучшите. Используйте эти 2 метода в зависимости от того, что вам реально нужно сделать, удалить вьюху из массива subview, либо просто её скрыть, не меняя иерархии.
Наверное, при условии, что всё-таки в этом представлении не содержится колоссального объёма информации)
0
zulkis
682 / 609 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
08.03.2012, 10:31 #4
Adem, ну это уже банальные вещи
0
Santer.Net
15 / 15 / 1
Регистрация: 18.11.2010
Сообщений: 122
10.03.2012, 01:01 #5
Все зависит от типа родительского вью и от поставленных задач. Если стоит вопрос о том прятать элементы на ячейке(cell) или удалять , то в Апплевской документации они говорят что надо удалять, иначе у приложения будет падать производительность, потому что система все равно будет прорисовывать элемент, просто потом сделает его невидимым. В обще аппел не рекомендует что-либо прятать, лучше удалять и выше производительность будет и меньме памяти будет занято в текущий момент. Хайды удобно использовать в случае малого сокрытия элементов нв целых формах. Пример, жмем по ячейки переходим на скрин,если номер телефона у данной сущности есть отобразить кнопку call иначе спрятать(если у тебя ксиб это самый простой способ сэкономить и время и производительность не упадет).
1
andrei0077
6 / 6 / 1
Регистрация: 23.06.2011
Сообщений: 92
10.03.2012, 10:07  [ТС] #6
Цитата Сообщение от Santer.Net Посмотреть сообщение
Все зависит от типа родительского вью и от поставленных задач. Если стоит вопрос о том прятать элементы на ячейке(cell) или удалять , то в Апплевской документации они говорят что надо удалять, иначе у приложения будет падать производительность, потому что система все равно будет прорисовывать элемент, просто потом сделает его невидимым. В обще аппел не рекомендует что-либо прятать, лучше удалять и выше производительность будет и меньме памяти будет занято в текущий момент. Хайды удобно использовать в случае малого сокрытия элементов нв целых формах. Пример, жмем по ячейки переходим на скрин,если номер телефона у данной сущности есть отобразить кнопку call иначе спрятать(если у тебя ксиб это самый простой способ сэкономить и время и производительность не упадет).
Спасибо, хороший ответ.
0
aply
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 40
04.06.2014, 16:05 #7
Подскажите: Есть UIView, на который добавляется кастомный UIVew

Objective-C
1
[self.infoView addSubview:customerView];
Мне надо его удалить потом. Делаю:
Objective-C
1
[customerView removeFromSuperview];
но с экрана он не удаляется.

А вот такой код помогает:
Objective-C
1
2
3
for ( UIView* mysubview in [self.infoView subviews]) {
        [mysubview removeFromSuperview];
    }
В чем дело?
0
noname_club
103 / 94 / 10
Регистрация: 01.05.2013
Сообщений: 598
04.06.2014, 16:37 #8
В чем дело?
брейк поинтами проверяйте указатели. наверняка [customerView removeFromSuperview]; вызывает nil
0
aply
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 40
05.06.2014, 08:09 #9
проверил customerView - не nil.
customerView это синтезированное свойство.
Попробовал написать [self.customerView removeFromSuperview];
А если объявить его как приватную переменную, то тоже нифига не работает. Ничего не понимаю...

Добавлено через 24 минуты
забыл дописать:
Objective-C
1
[self.customerView removeFromSuperview];
работает
0
noname_club
103 / 94 / 10
Регистрация: 01.05.2013
Сообщений: 598
05.06.2014, 09:01 #10
customerView это синтезированное свойство.
забудь про слово sythenize если используешь ARC

правила объявления свойств при включенном ARC:


1) strong свойства

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@interface MyClass: NSObject
 
@property NSString * hello; // << по умолчанию strong
 
@end
 
@implementation MyClass
 
-(void) viewDidLoad {
    
    // << внутри класса обращение идет через подчеркивание
    _hello = @"my value"; 
    NSLog(@"%@", _hello);
}
 
-(void) dealloc{
    // strong свойства требуют заниливания в dealloc
    _hello = nil;
}
 
@end
2) weak свойства

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@interface MyClass: NSObject
 
@property NSString * hello;
@property (weak,nonatomic) NSString * helloWeak;
 
@end
 
@implementation MyClass
 
-(void) viewDidLoad {
    
    _hello = @"my value"; 
    _helloWeak = _hello;
    NSLog(@"%@", _helloWeak);
}
 
-(void) dealloc{
    // weak свойства не требуют заниливания в dealloc
    _hello = nil;
}
 
@end
3) assign свойства
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
@interface MyClass: NSObject
 
@property (nonatomic) NSString * hello;
 
@end
 
@implementation MyClass
 
-(void) viewDidLoad {
    
    _hello = @"my value"; // уставнока значения напрямую
    
    NSLog(@"%@", self.hello);
    
    // уставливаем через сеттер
    
    self.hello = @"my value2";
    
    NSLog(@"%@", self.hello);
}
 
-(void) setHello: (NSString*) value {
    
    NSLog(@"Вызван сеттер свойства");
    
    _hello = [NSString stringWithFormat: @"%@%@", value , @"_setter_ready"];
}
 
-(void) dealloc{
 
    _hello = nil;
}
 
@end
4) readonly свойства
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@interface MyClass: NSObject
 
@property (readonly) NSString * hello;
 
@end
 
@implementation MyClass
 
-(void) viewDidLoad {
    
 
    NSLog(@"%@", self.hello);
}
 
-(NSString*) hello {
    return @"Вызван геттер свойства";
}
 
@end
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.06.2014, 09:01
Привет! Вот еще темы с ответами:

Form1->Hide() - C++ Builder
Здравствуйте как можно сделать чтоб при запуске программы ее не было видно? подскажите плз. еси делать невидимым. то выдают ошибку типа...

hide.dll - Delphi
Здравствуйте! Узнал, код который скрывает процесс в XP, НО у меня Windows 7 и выходит ошибка что нет такого файла - hide.dll; К какому...

Close -> Hide - C#
Доброе время суток! По условию программы когда нажимаеш на кнопку &quot;Закрыть&quot; (на бордере), программа должна не закрыватся, а сворачиватся...

Easy hide ip - Софт
Может есть у кого ключи к етой программе?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Yandex
Объявления
05.06.2014, 09:01
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru