Название: Objective-C. Карманный справочник Отправлено: serg_yl от Сентябрь 26, 2012, 07:57 Всем привет!
В книге Дэвида Чиснелла «Objective-C. Карманный справочник, читал про дерективу synthesize и то как она синтезирует методы доступа к переменной объекта (60 или 61 стр.). После описания чего да как, идет предложение "В этом случае компилятор сформирует метод с правильной семантикой для текущего режима компиляции". Не совсем понятно что автор имели ввиду. Пожалуйста, объясните начинающему программисту смысл этого предложения. Спасибо. Название: Re: Objective-C. Карманный справочник Отправлено: kambala от Сентябрь 26, 2012, 12:10 ну в следующем предложении же всё чётко объяснено: подразумевается используемый режим управления памятью (ручной, ARC, GC), что компилятор сам корректно перегенерирует все синтезированные методы в случае изменения режима управления памятью и разработчику не нужно ничего делать для этого.
Название: Re: Objective-C. Карманный справочник Отправлено: serg_yl от Сентябрь 26, 2012, 13:21 Спасибо! ;)
Название: Re: Objective-C. Карманный справочник Отправлено: serg_yl от Сентябрь 30, 2012, 13:17 Пример такого плана.
Есть класс описанный след. образом. Код И есть его реализация с неким содержанием и неким методом. Код В этом случае будет ошибка в строке self.title = nil; - Assigment to readonly property. Что нужно поставить чтобы эта строчка была верной? При этом не прописывая вручную setter и getter методы, и не меняя свойство readonly для тех, кто будет обращаться к этому объекты из вне. Название: Re: Objective-C. Карманный справочник Отправлено: kambala от Сентябрь 30, 2012, 17:18 вставить в .m перед @implementaion testClass:
Код
строки лучше конечно объявлять copy а не assign, а то вызывающий код может сделать гадость: Код
Название: Re: Objective-C. Карманный справочник Отправлено: serg_yl от Октябрь 02, 2012, 17:27 Спасибо! :D
Название: Re: Objective-C. Карманный справочник Отправлено: serg_yl от Октябрь 02, 2012, 21:48 Вот еще один примерчик. :)
Есть 2 класса, файлы объявления такие: Код
Код
Программа не запуститься с таким кодом. Почему? И как исправить? По моим соображениям, программа не запуститься потому что для работы с NSObject нужно обязательно подключить #import <Foundation/Foundation.h>. Второе, поменять в первом файле в объявлении класса в угловых скобках название протокола с test2Delegate на test1Delegate и поменять тип переменной с test2 на test1. За тем, аналогичным образом, сделать тоже самое во втором файле. Поправьте меня если не так. Название: Re: Objective-C. Карманный справочник Отправлено: kambala от Октябрь 03, 2012, 01:02 есть предложение взять и попробовать скомпилировать код, а не строить догадки — компилятор точно знает что можно а чего нельзя.
всякие UIKit и Foundation обычно подключают в pch и забывают о них. test2 должен реализовывать test2Delegate а не test1Delegate. обычно в classname.h располагают @interface classname, а не то, как тут написано. |