Форум программистов, компьютерный форум, киберфорум
Наши страницы
Objective-C
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
andrei0077
6 / 6 / 0
Регистрация: 23.06.2011
Сообщений: 92
1

hide или removeFromSuperview

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

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

SplitView - hide Detail & show Master in Portrait
Привет! Помогите, пожалуйста, советом, как можно заставить...

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

Hide When
блин ни как понять не могу мне нужно скрыть кнопку когда поле имеет значение...

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

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

9
zulkis
684 / 611 / 43
Регистрация: 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
684 / 611 / 43
Регистрация: 13.01.2011
Сообщений: 1,724
08.03.2012, 10:31 4
Adem, ну это уже банальные вещи
0
Santer.Net
15 / 15 / 0
Регистрация: 18.11.2010
Сообщений: 122
10.03.2012, 01:01 5
Все зависит от типа родительского вью и от поставленных задач. Если стоит вопрос о том прятать элементы на ячейке(cell) или удалять , то в Апплевской документации они говорят что надо удалять, иначе у приложения будет падать производительность, потому что система все равно будет прорисовывать элемент, просто потом сделает его невидимым. В обще аппел не рекомендует что-либо прятать, лучше удалять и выше производительность будет и меньме памяти будет занято в текущий момент. Хайды удобно использовать в случае малого сокрытия элементов нв целых формах. Пример, жмем по ячейки переходим на скрин,если номер телефона у данной сущности есть отобразить кнопку call иначе спрятать(если у тебя ксиб это самый простой способ сэкономить и время и производительность не упадет).
1
andrei0077
6 / 6 / 0
Регистрация: 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
107 / 98 / 12
Регистрация: 01.05.2013
Сообщений: 603
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
107 / 98 / 12
Регистрация: 01.05.2013
Сообщений: 603
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
05.06.2014, 09:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.06.2014, 09:01

Hide()
Навесил на селект событие, при клике прятать его первый дочерний элемент...

Outline И Hide When
Если сделать аутлайн с больше трёх уровнями вложенности, и в них на элементах...

Hide Formula
Всем привет! Ситуация: есть документ, который создается dxl-импортом. В этом...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

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