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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Objective-C Сохранение ID пользователя в iCloud http://www.cyberforum.ru/objective-c/thread1185778.html
Доброго времени суток. Изучаю работу с iCloud. Есть вопрос, мне нужно сохранять в облако id пользователя который генерируется один раз, потом при повторном запуске приложения сначал проверяет есть ли id пользователя в облаке если есть он берет его оттуда, если нет он генерирует по новой его. Заранее спасибо за помощь Добавлено через 1 минуту Генерация происходит на устройстве. Я думал...
Objective-C Программная прокрутка UISrollView Всем привет. Такая проблема, надо прокрутить программно UISrollView, пытаюсь использовать recttovisible , но почему то прокрутка не происходит... как правильно всё сделать?? спс http://www.cyberforum.ru/objective-c/thread1181635.html
BecomeFirstResponder Objective-C
Всем привет,возникла проблема с переносом текста-надо чтобы каждая следуйщая буква переносилась в новый ТекстФилд...пока текст филды делал через сториБоард - все работало,а как только переписал их программно - перестало переносить... -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ NSString *enteredText =...
Приложение вылетает, сообщая о нехватке памяти Objective-C
Признаться, я долгое время искал решение своей проблемы сам и во многом ее решил, однако вылеты все же продолжаются... В итоге решил таки обратиться к сообществу братьев-программистов )) Итак, приложение над которым я работаю очень большое, приводить его тут не вижу смысла. В общих чертах: 1. Приложение как бы модульное, т.е. существует несколько ViewController'ов (модулей), которые сменяют...
Objective-C Воспроизведение музыки из интернета сразу после нажатия кнопки http://www.cyberforum.ru/objective-c/thread1175697.html
Для воспроизведения песни в браузере использую GET запрос к сервису. Браузер, в частности гугл хром, начинает сразу её воспроизводить и показывает количество загруженного. Как сделать такое же в IOS ? Пробую через AVAudioPlayer и NSURLSessionDownloadTask, но это не то - песня начинает звучать только после полного скачивания. Как заставить звучать сразу? При этом желательно еще и кэшировать в...
Objective-C Запомнить была ли нажата кнопка Всем привет! Есть кнопка UIButton, отвечающая за выставление "Лайков" к посту. Для изменения цвета кнопки после нажатия использую следующий код, меняющий картинку кнопки с like.png на liked.png. forState:UIControlStateNormal]; Проблема в том, что после завершения приложения и его повторного открытия кнопка снова становится как до нажатия, т.е с картинкой like.png. Вопрос такой: как сделать... подробнее

Показать сообщение отдельно
noname_club
102 / 90 / 9
Регистрация: 01.05.2013
Сообщений: 583
27.05.2014, 13:53  [ТС]     Хранение WEAK объектов в массиве
Возможно NSPointerArray это и есть стандартное решение в данной ситуации

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#import "ViewController.h"
 
int cu_random(int min, int max) {
    return ((arc4random() % (max-min+1)) + min);
}
 
#pragma mark -
 
@interface ViewController ()
 
@property NSMutableArray * data;
 
@property NSPointerArray * data2;
 
@property NSNumber * number1;
@property NSNumber * number2;
 
@end
 
#pragma mark -
 
@implementation ViewController
 
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    //_data = [NSMutableArray new];
    
    _data2 = [NSPointerArray weakObjectsPointerArray];
 
}
 
 
-(void)dealloc {
    //_data = nil;
    _data2 = nil;
    _number1 = nil;
    _number2 = nil;
}
 
 
- (IBAction)btn_create:(id)sender {
    
    NSLog(@">> btn_create <<");
    
    _number1 = @( cu_random(0, 99) );
    _number2 = @( cu_random(0, 99) );
    
    [_data2 addPointer:(__bridge void *)(_number1)];
    [_data2 addPointer:(__bridge void *)(_number2)];
    
 
}
 
- (IBAction)btn_show:(id)sender {
    NSLog(@">> btn_show <<");
    int i = 0;
    
    for (id obj in _data2) {
        NSLog(@"Object %d is : %@", i, obj);
    }
}
- (IBAction)btn_clear:(id)sender {
    NSLog(@">> btn_clear <<");
    _number1 = nil;
    _number2 = nil;
}
@end
Ответ консоли

2014-05-27 13:44:55.443 testWeak[952:90b] >> btn_create <<
2014-05-27 13:44:56.275 testWeak[952:90b] >> btn_show <<
2014-05-27 13:44:56.275 testWeak[952:90b] Object 0 is : 27
2014-05-27 13:44:56.275 testWeak[952:90b] Object 0 is : 98
2014-05-27 13:44:57.715 testWeak[952:90b] >> btn_clear <<
2014-05-27 13:44:58.563 testWeak[952:90b] >> btn_show <<
2014-05-27 13:44:58.563 testWeak[952:90b] Object 0 is : (null)
2014-05-27 13:44:58.564 testWeak[952:90b] Object 0 is : (null)
Однако NSValue более гибкое, так как NSPointerArray подразумевает что все объекты в нем weak, а NSValue может лежать в обычном массиве.

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