Форум программистов, компьютерный форум 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) generateScaleSizeBYRectangleBorder: (CGSize) rectSize ItemSize: (CGSize) ItemSize { if (ItemSize.height<=rectSize.height && ItemSize.width<=rectSize.width) { return ItemSize; ...
Objective-C Картинки в NORETINA устройствах
Думаю некоторые сталкивались с тем что обычные устройства не умеют правильно интерполировать(сгладить) изображение, если они превышает размеры своего контейнера. Если на retina с этим делом все "хорошо". То на обычном iphone можно увидеть вот такую картинку верхнее изображение без обработки. для нижнего применено программное сглаживание
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. Просмотров 7039. Ответов 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. И не пилите себе мозг". Стоит ли остановиться на этом объяснении? Или лучше (если оно есть), пусть и на начальном этапе обучения, углубиться в этот вопрос?

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