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

Великие и ужасные @property - Objective-C

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Objective-C Передача файлов через iTunes http://www.cyberforum.ru/objective-c/thread934748.html
Может кто-нибудь объяснить логику передачи фалов через айтюнс в приложение? файлы автоматически появляются в documents? и как осуществить их обработку?
Objective-C URL-Scheme Привет всем! Вопрос таков: нужно передавать и получать данные от сторонних приложений, как получать информацию каким приложениям можно передавать(ну то есть открыть данный документ в офисе,... http://www.cyberforum.ru/objective-c/thread934744.html
Вписывание CGsize в другой CGsize с сохранением пропорций Objective-C
Скажем, у нас есть большой прямоугольник если нам надо его вписать в маленький прямоугольник с сохранением пропорций, тогда составим велосипед вписывания : -(CGSize)...
Objective-C Картинки в NORETINA устройствах
Думаю некоторые сталкивались с тем что обычные устройства не умеют правильно интерполировать(сгладить) изображение, если они превышает размеры своего контейнера. Если на retina с этим делом все...
Objective-C Mac OS open-edit-save image? http://www.cyberforum.ru/objective-c/thread932791.html
Здраствуйте! Мне нужно сосздать бистро програмку под Мас ОС простенькую. Которая откриваэт изображения, потом что там изменяет (что небуть) и затем сохраняет Самому разобратся пока не получается...
Objective-C NSURL Здравствуйте мне нужно выводить ссылку на сайт в *Label не просто текстом, а именно ссылка, чтобы можно было по ней тапнуть и перейти на страницу. Заранее спасибо Добавлено через 1 час 20 минут... подробнее

Показать сообщение отдельно
kievkao
42 / 42 / 2
Регистрация: 22.11.2012
Сообщений: 225

Великие и ужасные @property - Objective-C

07.08.2013, 17:39. Просмотров 7335. Ответов 7
Метки (Все метки)

Всем привет!

Уже второй месяц изучаю разработку под iOS, но все откладывал этот вопрос на потом - т.к., мол, "пока и так работает, как-то почитаю".
Сейчас наконец-то решил выяснить для себя этот момент окончательно, а то аж неприлично))
Чувствую, что моя серия вопросов очень банальная, но все равно прошу помочь. Очень надеюсь, что написанное мною полотно (и ответы на него) будет кому-то еще полезно.

При объявлении свойств, им указываются параметры. Я уверен, что некоторые я пониманию не совсем правильно, а в некоторые и вовсе не въезжаю.
Прошу более опытных обитателей форума отметить мне мои ошибки:

1. readonly - getter-метод генерируется, но setter - нет. Т.е. менять значение свойства мы не сможем.
2. readwrite - генерируются оба метода. Возникает вопрос - разве это не избыточный параметр? Я ни разу не использовал это ключевое слово, и всегда мог спокойно изменять и читать значение переменных. Или по умолчанию "readwrite" установлен?
3. nonatomic - в немногозадачных приложениях ускоряет ускоряет доступ к объекту, так как мы тратим время на создание блокировок, обеспечивающих доступ из разных потоков.
4. atomic - смысл меняется по аналогии с предыдущим пунктом.
5. assign - цитата - "для задания нового значения используется оператор присваивания". Т.е., метод-setter такого рода имеет вид вроде:
Objective-C
1
2
3
4
-(void)someSetter(id)newVar
{
    var = newVar;
}
А вот дальше у меня уже начинаются дебри:

6. retain - никак могу понять сути такого сеттера, даже прочитав несколько статей. Вот, есть такой пример:
Objective-C
1
2
3
4
- (void)setList:(List *)list{
[_list autorelease];
_list =[list retain];
}
И этот пример мне просто разрывает мозг. Первая строка - мы уменьшаем кол-во ссылок на объект на 1, с использованием отложенного вызова. И тут же следующей строкой инициализируем его принимаемым значением, увеличивая счетчик ссылок, который мы только что, предыдущей операций, уменьшили.
Смысл никак не могу уловить.

7. copy - аналогично assign, с тем отличием, что присваиваем не сам принимаемый объект, а его копию. Вот тут еще одна загадка для меня:
допустим мы объявили свойство для некоего NSString, и указали параметр свойства - copy. Потом, с помощью сеттера присваиваем этой переменной значение @"abc".
Какая будет разница при подобном присваивании, если параметр свойства будет не copy, а assign?
И в чем отличие присваивания копии @"abc" и самого значения @"abc" в данном случае?
Или придуманный мною пример с NSString не является ситуацией, на которой можно отобразить пример использования того, либо иного свойства?

8. strong и weak - В некоторых заметках вижу простое, как двери объяснение - мол, "strong - это, как retain, a weak - как assign в том случае, если вы используете ARC. И не пилите себе мозг". Стоит ли остановиться на этом объяснении? Или лучше (если оно есть), пусть и на начальном этапе обучения, углубиться в этот вопрос?

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