|
42 / 42 / 2
Регистрация: 22.11.2012
Сообщений: 225
|
|||||||||||
Великие и ужасные @property07.08.2013, 17:39. Показов 12371. Ответов 8
Метки нет (Все метки)
Всем привет!
Уже второй месяц изучаю разработку под iOS, но все откладывал этот вопрос на потом - т.к., мол, "пока и так работает, как-то почитаю". Сейчас наконец-то решил выяснить для себя этот момент окончательно, а то аж неприлично)) Чувствую, что моя серия вопросов очень банальная, но все равно прошу помочь. Очень надеюсь, что написанное мною полотно (и ответы на него) будет кому-то еще полезно. При объявлении свойств, им указываются параметры. Я уверен, что некоторые я пониманию не совсем правильно, а в некоторые и вовсе не въезжаю. Прошу более опытных обитателей форума отметить мне мои ошибки: 1. readonly - getter-метод генерируется, но setter - нет. Т.е. менять значение свойства мы не сможем. 2. readwrite - генерируются оба метода. Возникает вопрос - разве это не избыточный параметр? Я ни разу не использовал это ключевое слово, и всегда мог спокойно изменять и читать значение переменных. Или по умолчанию "readwrite" установлен? 3. nonatomic - в немногозадачных приложениях ускоряет ускоряет доступ к объекту, так как мы тратим время на создание блокировок, обеспечивающих доступ из разных потоков. 4. atomic - смысл меняется по аналогии с предыдущим пунктом. 5. assign - цитата - "для задания нового значения используется оператор присваивания". Т.е., метод-setter такого рода имеет вид вроде:
6. retain - никак могу понять сути такого сеттера, даже прочитав несколько статей. Вот, есть такой пример:
Смысл никак не могу уловить. 7. copy - аналогично assign, с тем отличием, что присваиваем не сам принимаемый объект, а его копию. Вот тут еще одна загадка для меня: допустим мы объявили свойство для некоего NSString, и указали параметр свойства - copy. Потом, с помощью сеттера присваиваем этой переменной значение @"abc". Какая будет разница при подобном присваивании, если параметр свойства будет не copy, а assign? И в чем отличие присваивания копии @"abc" и самого значения @"abc" в данном случае? Или придуманный мною пример с NSString не является ситуацией, на которой можно отобразить пример использования того, либо иного свойства? 8. strong и weak - В некоторых заметках вижу простое, как двери объяснение - мол, "strong - это, как retain, a weak - как assign в том случае, если вы используете ARC. И не пилите себе мозг". Стоит ли остановиться на этом объяснении? Или лучше (если оно есть), пусть и на начальном этапе обучения, углубиться в этот вопрос? Извините за такой объем, буду очень рад получить ответы хотя бы на часть моих вопросов, и указаний - в каких своих формулировках я не прав. Спасибо.
0
|
|||||||||||
| 07.08.2013, 17:39 | |
|
Ответы с готовыми решениями:
8
Великие умы подскажите неучу)) О великие умы не могу поставить винду!!! о,великие программисты!не оставьте без ответа! |
|
in god we trust
74 / 74 / 8
Регистрация: 20.04.2012
Сообщений: 201
|
|
| 07.08.2013, 18:36 | |
|
уже было полно подобных тем, но ладно в кратце)
readonly - тут все понятно думаю =) readwrite - стоит по умолчанию nonatomic, atomic ты впринципе верно описал Дальше: без arc: 1 retain при присваивании увеличивает счетчик ссылок обьекта, те ты становишся владельцем 2 assign при присваивании не увеличивает счетчик ссылок, при удалении обьекта свойство будет указывать на не существующий обект. Важно: не становится ni т.е. указывает на неопределенное место в памяти.Нужно самостоятельно занулять. 3 copy тут какбы вопросов не должно быть ) копирует и возвращает удержаный объект(объект не удалится). с arc: 1 strong==weak 2 weak не совсем аналог assign на самом деле. Действие похожее, но становиться nil если объект был удален. Т.е более безопасно. 3 copy тоже самое что и без арк есть еще один вид unsafe_unretained вот это точно тоже что и assign. Предбочтительно использовать weak. Нужно если пишем под , если не ошибаюсь, ios 4, там weak не поддерживается.
1
|
|
|
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
|
|
| 07.08.2013, 18:49 | |
|
1
|
|
|
in god we trust
74 / 74 / 8
Регистрация: 20.04.2012
Сообщений: 201
|
|
| 07.08.2013, 18:51 | |
|
0
|
|
|
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
|
|||||||
| 07.08.2013, 18:57 | |||||||
|
Ладно. Продолжу, раз ввязался
1
|
|||||||
|
1 / 1 / 0
Регистрация: 03.06.2013
Сообщений: 20
|
|
| 15.08.2013, 19:15 | |
|
А можете привести пример, где нужно использовать именно strong, а где именно weak?
Как я понял strong нужно использовать чтобы проперти не уничтожалось в вызвавшем его классе?
0
|
|
|
42 / 42 / 2
Регистрация: 22.11.2012
Сообщений: 225
|
|
| 19.08.2013, 18:42 [ТС] | |
|
Для тех, кто, как и я, долго тупил с пониманием сути атрибутов свойств, хочу порекомендовать книгу Конвея-Хиллегасса "Программирование под iOS. Для профессионалов".
Купил, сел "перед обедом" пролистать - мгновенно все понял)) Очень доходчиво написано!
1
|
|
|
3067 / 727 / 69
Регистрация: 24.09.2008
Сообщений: 1,531
|
|
| 21.08.2013, 14:01 | |
|
trims, очень просто привести требуемые примеры.
Используем strong, если требуется, что бы один объект зависел от другого. В абстрактных примерах можно привести такой пример: "У машины колеса должны быть strong (retain). Если удаляется машина, то обязательно удаляются его колеса". Если мы ведем речь про weak ссылки, то это что-то похоже на следующее: "Машина едет по дороге, у машины есть weak ссылка на дорогу. Дорога не зависит от машины, машина не зависит от дороги. Машина может легко поменять дорогу, а старая дорога останется там же где и была.". Вообще понимание таких базовых вещей очень важно. И примеры которые были приведены в первом сообщении про сеттер для retain property совершенно не верный. Вообще в целом, правильную мысль выразил kievkao в последнем своем сообщении. Намного проще купить книги и там почитать. В пользу этого хочу сказать, что книги по iOS читаются легче чем книги по таким языкам как C++, Java, PHP. Наверное потому что сам по себе Objective-C достаточно мал по сравнению с другими языками. В этом языке не так много синтаксического сахара и это играет свою роль.
0
|
|
|
0 / 0 / 0
Регистрация: 24.09.2009
Сообщений: 14
|
|
| 26.10.2017, 13:47 | |
|
У меня такой вопрос.
Объявил weak property (класс UserProfile с парой nsstring-ами) в наследнике UITableViewController. В viewDidLoad проинициализировал класс, занёс значения, а в cellForRowAtIndexPath - читал значения для ячеек. Но только столкнулся с тем, что на iPhone 5 и в симуляторе всё ок, а на phone 6 & 7 plus - уже были null. Вопрос - на каком этапе и кто решил, что UserProfile надо сделать nil? Смена weak на strong решило "проблему" и на plus моделях.
0
|
|
| 26.10.2017, 13:47 | |
|
Помогаю со студенческими работами здесь
9
Ужасные пытки Программу не пропускают на прилавок. Великие умы, выручайте знаниями Property Get и Property Let Странное поведение Ужасные артефакты на экране Ужасные артефакты на экране Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|