6 / 6 / 0
Регистрация: 23.06.2011
Сообщений: 92
|
|
1 | |
ARC и свойства03.10.2012, 14:56. Показов 3235. Ответов 19
Метки нет (Все метки)
Добрый день! Такой вопрос. В режиме ARC , в каких случаях нужно писать у свойства nonatomic, а в каких atomic? Смотрел документацию, смотрел статьи на русском, так и не понял суть, объясните кто-нибудь простым языком, если можно. Заранее спасибо.
0
|
03.10.2012, 14:56 | |
Ответы с готовыми решениями:
19
IOS и ARC Pie, arc Выполнить команду в set свойства для свойства SelectedItem (ComboBox ) MVVM Что лучше, свойства с приватной переменной или автоматические свойства? |
686 / 613 / 43
Регистрация: 13.01.2011
Сообщений: 1,722
|
|
03.10.2012, 19:11 | 2 |
atomic - постараюсь объяснить:
Если 2 потока работают и первый(А) обращается к геттеру, а Б в это же время обращается к сеттеру одного и того же свойства, то atomic Гарантирует то, что в А вернется целое неиспорченное значение, не смотря ни на какие другие действия со стороны других потоков. По сути, атомарная операция говорит нам о том, что если выполняется атомарная функция, то на уровне CPU невозможно прервать выполнение этой функции. Она(функция) выполнится полностью. Однако это не гарантирует, что А получит одно и тоже значение, если в этот момент потоки Б, В и Г одновременно вызывают сеттер у свойства. nonatomic не гарантирует такой целостности , однако он значительно быстрее. А ARC\не ARC вообще на это дело не влияет. ARC это совсем другая тема. Добавлено через 34 минуты На самом деле влияет(но на скорость работы, и зависимости от самописных либо synthesize методов доступа)
1
|
6 / 6 / 0
Регистрация: 23.06.2011
Сообщений: 92
|
|
04.10.2012, 11:21 [ТС] | 3 |
Спасибо.Теоретически понятно. А практически, для каких объектов обычно указывают atomic?
0
|
686 / 613 / 43
Регистрация: 13.01.2011
Сообщений: 1,722
|
|
04.10.2012, 14:28 | 4 |
Обычно - тут не совсем подходящее слово.
Все зависит от ситуации. А ситуации бывают разные.
1
|
6 / 6 / 0
Регистрация: 23.06.2011
Сообщений: 92
|
|
04.10.2012, 14:33 [ТС] | 5 |
А можно пару примеров использования atomiс?
0
|
6 / 6 / 0
Регистрация: 23.06.2011
Сообщений: 92
|
||||||
12.10.2012, 14:07 [ТС] | 6 | |||||
Решил проверить параметр atomic/nonatomic . Добавил в контроллер свойство @property (nonatomic,copy) NSString * path; Создал 2 потока - один обращается к геттеру, второй к сеттеру свойства. Поменял nonatomic на atomic, но во втором потоке всё равно выводится то значение, которое присвоил первый поток. Atomic разве не должен хранить первоначальное значение?
0
|
686 / 613 / 43
Регистрация: 13.01.2011
Сообщений: 1,722
|
|
12.10.2012, 15:29 | 7 |
Значит непонятно.
С чего бы в переменной должно быть другое значение? Вы присвоили "thread1String", Вы его и получили. Вы думаете, что 2й поток обратится к переменной перед 1м? Вы ошибаетесь
1
|
6 / 6 / 0
Регистрация: 23.06.2011
Сообщений: 92
|
|
12.10.2012, 15:37 [ТС] | 8 |
Я понимаю, что второй поток обратился после 1-го. Они же не могут одновременно к ней обратиться. Получается, кто первый обратился, тот и меняет значение, а кто второй обратился, тот получает уже новое значение. А чём тогда смысл свойства atomic?
0
|
686 / 613 / 43
Регистрация: 13.01.2011
Сообщений: 1,722
|
|
12.10.2012, 16:12 | 9 |
1
|
6 / 6 / 0
Регистрация: 23.06.2011
Сообщений: 92
|
|
12.10.2012, 16:14 [ТС] | 10 |
А, ну тогда понятно. Тогда последний вопрос. Как в моём примере сделать, чтоб они одновременно обратились?
0
|
686 / 613 / 43
Регистрация: 13.01.2011
Сообщений: 1,722
|
|
13.10.2012, 16:54 | 11 |
Ответ на ваш вопрос - запустите 2 цикла обращений в разных потоках с очень маленьким интервалом. И обращения совпадут.
1
|
6 / 6 / 0
Регистрация: 23.06.2011
Сообщений: 92
|
|
13.10.2012, 19:24 [ТС] | 12 |
0
|
686 / 613 / 43
Регистрация: 13.01.2011
Сообщений: 1,722
|
||||||
14.10.2012, 09:32 | 13 | |||||
1
|
6 / 6 / 0
Регистрация: 23.06.2011
Сообщений: 92
|
||||||
15.10.2012, 13:22 [ТС] | 14 | |||||
0
|
686 / 613 / 43
Регистрация: 13.01.2011
Сообщений: 1,722
|
|
15.10.2012, 14:44 | 15 |
А что должно то поменяться? Я не въезжаю в Вашу тему.
Вы сетите строчку каждый раз, ее же и считываете. В чем подвох? Что Вы ожидаете получить?
1
|
6 / 6 / 0
Регистрация: 23.06.2011
Сообщений: 92
|
|
15.10.2012, 15:13 [ТС] | 16 |
Я видимо не допонял насчет геттера. Я когда считываю значение, я разве не к геттеру обращаюсь? Когда мы задаём значение ,то обращаемся к сеттеру, а когда получаем, обращаемся к геттеру. Разве не так?
0
|
686 / 613 / 43
Регистрация: 13.01.2011
Сообщений: 1,722
|
|
15.10.2012, 19:58 | 17 |
1
|
6 / 6 / 0
Регистрация: 23.06.2011
Сообщений: 92
|
|
16.10.2012, 09:12 [ТС] | 18 |
Я хочу увидеть роль параметра nonatimic/ atomic . Вы говорили, что если 2 потока работают и первый обращается к геттеру, а второй это же время обращается к сеттеру одного и того же свойства, то atomic Гарантирует то, что в первый вернется целое неиспорченное значение. Сейчас вроде есть 2 таких потока, но я когда я меняю nonatomic на atomic , метод readString выводит то значение, которое задается в методе writeString. Или я чего-то не понимаю?
0
|
686 / 613 / 43
Регистрация: 13.01.2011
Сообщений: 1,722
|
|
17.10.2012, 05:30 | 19 |
Я попробую еще пример выдумать, но имхо, со строками мы ничего не добьемся. Слишком просто. Нужно усложнение.
1
|
6 / 6 / 0
Регистрация: 23.06.2011
Сообщений: 92
|
|
17.10.2012, 14:46 [ТС] | 20 |
Мне подойдёт абсолютно любой пример, где на практике видно разницу между atomic и nonatomic. Заранее благодарю.
0
|
17.10.2012, 14:46 | |
17.10.2012, 14:46 | |
Помогаю со студенческими работами здесь
20
PropertyGrid. Как отловить видимость свойства в зависимости от другого свойства? Файлы redo и arc Реализовать зависимость свойства volume у mediaElement от свойства Value у slider Можно ли объекту присвоить значение свойства от другого свойства? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |