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

Хранение WEAK объектов в массиве - Objective-C

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Objective-C Сохранение ID пользователя в iCloud http://www.cyberforum.ru/objective-c/thread1185778.html
Доброго времени суток. Изучаю работу с iCloud. Есть вопрос, мне нужно сохранять в облако id пользователя который генерируется один раз, потом при повторном запуске приложения сначал проверяет есть ли...
Objective-C Программная прокрутка UISrollView Всем привет. Такая проблема, надо прокрутить программно UISrollView, пытаюсь использовать recttovisible , но почему то прокрутка не происходит... как правильно всё сделать?? спс http://www.cyberforum.ru/objective-c/thread1181635.html
BecomeFirstResponder Objective-C
Всем привет,возникла проблема с переносом текста-надо чтобы каждая следуйщая буква переносилась в новый ТекстФилд...пока текст филды делал через сториБоард - все работало,а как только переписал их...
Приложение вылетает, сообщая о нехватке памяти Objective-C
Признаться, я долгое время искал решение своей проблемы сам и во многом ее решил, однако вылеты все же продолжаются... В итоге решил таки обратиться к сообществу братьев-программистов )) Итак,...
Objective-C Воспроизведение музыки из интернета сразу после нажатия кнопки http://www.cyberforum.ru/objective-c/thread1175697.html
Для воспроизведения песни в браузере использую GET запрос к сервису. Браузер, в частности гугл хром, начинает сразу её воспроизводить и показывает количество загруженного. Как сделать такое же в...
Objective-C Запомнить была ли нажата кнопка Всем привет! Есть кнопка UIButton, отвечающая за выставление "Лайков" к посту. Для изменения цвета кнопки после нажатия использую следующий код, меняющий картинку кнопки с like.png на liked.png. ... подробнее

Показать сообщение отдельно
noname_club
103 / 94 / 10
Регистрация: 01.05.2013
Сообщений: 598
27.05.2014, 12:11  [ТС]
Это мой взгляд на ваше решение.
+ NSValue... в нем же есть метод valueWithNonretainedObject
Почему не юзать его ? В чем ваше решение лучше ? Не пойму зачем, если есть возможность - объясните...
Вот она задача. С которой не справляется valueWithNonretainedObject зато справляется NSWeakObject

Итак имеем следующий код

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
- (IBAction)btn_create:(id)sender {
    
    NSLog(@">> btn_create <<");
    
    _number1 = @( cu_random(0, 99) );
    _number2 = @( cu_random(0, 99) );
    
    [_data addObject: [NSValue valueWithNonretainedObject:_number1]];
    [_data addObject: [NSValue valueWithNonretainedObject:_number2]];
}
 
- (IBAction)btn_show:(id)sender {
    NSLog(@">> btn_show <<");
    int i = 0;
 
    for (NSValue * obj in _data) {
        NSLog(@"Object %d is : %@", i, obj.nonretainedObjectValue);
        i++;
    }
}
- (IBAction)btn_clear:(id)sender {
    NSLog(@">> btn_clear <<");
    _number1 = nil;
    _number2 = nil;
}
@end
Ответ консоли

2014-05-27 11:59:59.710 testWeak[304:90b] >> btn_create <<
2014-05-27 12:00:02.398 testWeak[304:90b] >> btn_show <<
2014-05-27 12:00:02.398 testWeak[304:90b] Object 0 is : 61
2014-05-27 12:00:02.399 testWeak[304:90b] Object 1 is : 19
2014-05-27 12:00:04.262 testWeak[304:90b] >> btn_clear <<
2014-05-27 12:00:05.790 testWeak[304:90b] >> btn_show <<
далее падение
Хранение WEAK объектов в массиве

Выводы?
NSWeakObject может быть использован в качестве более безопасной альтернативы [NSValue valueWithNonretainedObject]

Так как если объект самоуничтожился. То в NSWeakObject будет лежать nil. В отличии от зомби указателя в NSValue.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru