http://pyobjc.ru/2008/07/19/vvedenie-v-objective-c/pyobjc.ru comments on Введение в Objective-C2011-03-12T12:49:38ZZYVEvgeniy KrysanovDnVEvgeniy KrysanovИгорь ЕвсюковDaemonИгорь ЕвсюковDaemonDaemonEvgeniy KrysanovEvgeniy KrysanovDaemoncleoagАлександр firr13SergeyТрезвый СкептикIgor SoloydenkoPeetmicrcxRuckefИгорь ЕвсюковИгорь Евсюковdjango-atompubhttp://pyobjc.ru/2008/07/19/vvedenie-v-objective-c/#c486Comment on Введение в Objective-C by Игорь Евсюков2011-03-12T12:49:38Z2011-03-11T16:47:02ZИгорь Евсюков<p>не&nbsp;совсем, </p> <p>можно сделать &#8220;private&#8221; сообщения – в .m-файле написать до&nbsp;@implementation </p> <p>@interface MyClass() // &lt;= пустые скобки!! &mdash; (void)doSomething;&nbsp;@end </p> <p>@implementation MyClass //реализация всего, включая doSomething&nbsp;@end </p> <p>то затем при вызове внутри класса MyClass, например [self doSomething]; все будет работать, но при вызове этого метода извне, будет бросаться исключение undefined&nbsp;selector. </p>http://pyobjc.ru/2008/07/19/vvedenie-v-objective-c/#c485Comment on Введение в Objective-C by Игорь Евсюков2011-03-12T12:49:38Z2011-03-11T16:43:35ZИгорь Евсюков<p>да, это примерно тоже самое. Разница есть, но не на поверхностном&nbsp;уровне </p>http://pyobjc.ru/2008/07/19/vvedenie-v-objective-c/#c483Comment on Введение в Objective-C by Ruckef2011-03-11T07:02:19Z2011-03-11T07:02:19ZRuckef<p>Скажите, а переменная self &mdash; это аналог this в&nbsp;С++? </p>http://pyobjc.ru/2008/07/19/vvedenie-v-objective-c/#c400Comment on Введение в Objective-C by micrcx2009-08-31T23:50:01Z2009-08-31T23:50:00Zmicrcx<p>Вы батенька неправы. Да-с. Если-бы Mac <span class="caps">OS</span> Х(Cocoa) разжился-бы бесплатным C/C++, то каждбый чудак на букву &#8220;М&#8221; мог-бы клепать код под креативы Apple. А так &mdash; хрен вам. Учите новый язык и новую матчасть. А не хотите &mdash; покупайте компилятор Intel-а за $400. Но учтите, он будет фурычить только на процессорах тов. Оттолини. Вот все материли Билла Г. за Windows и .<span class="caps">NET</span> и C#, не говоря уже о бредовом Managed C++-е (бедняга даже уволился из фирмы из-за критики), а он в последней студии C++ оставил и даже творчески развил в соответствие со стандартом. Человеком с большой Б(буквы) оказался, не то, что спятивший Джобс. Понятно, когда буржуй получает $1 в год, он с зависти беситься начинает и изобретать всякую хрень, что-б только народу нагадить. Вот и тут так. Учите Карлсона и Энгельсона. Они это ещё 150 лет назад&nbsp;знали. </p>http://pyobjc.ru/2008/07/19/vvedenie-v-objective-c/#c397Comment on Введение в Objective-C by Peet2009-07-31T01:20:39Z2009-07-31T01:20:38ZPeet<p><span class="dquo">&#8220;</span>Реализация класса — ClassName.m файл, содержащий фактический код для этих методов. Он также часто определяет частные методы, которые не доступны вне класса или экземпляра класса.&#8221; Нету там недоступных методы. Все методы одинаково доступны &mdash; посылай сообщение и он прекрасно выполнится. В objC нету private и protected&nbsp;методов. </p>http://pyobjc.ru/2008/07/19/vvedenie-v-objective-c/#c376Comment on Введение в Objective-C by Igor Soloydenko2009-07-04T17:18:11Z2009-07-04T17:18:11ZIgor Soloydenko<p>Вы написали про управление памятью&nbsp;следующее: </p> <p>// string1 будет удалена сборщиком мусора в автоматическом режиме NSString<em> string1 = [NSString string]; // для string2 вы должны будете вручную вызвать release метод NSString</em> string2 = [[NSString alloc] init]; [string2&nbsp;release]; </p> <p>Вопрос. А если NSString* ссылается на константу, следует ли освобождать память руками? Пример: NSString<em> baseDescription = [super description]; а в суперклассе description таков: -(NSString</em>) description { return @&#8221;<span class="caps">SOME</span> <span class="caps">STRING</span>&#8221;;&nbsp;} </p> <p>Я так полагаю, что освобождать память в данном случае не требуется руками. Тогда подскажите, как лучше организовать код для исключения ошибок типа утечки памяти, двойного освобождения памяти и т. п.? Дело в том, что я пришел к Objective-C из мира .<span class="caps">NET</span> и Java, поэтому не имею практики написания грамотного Си&nbsp;кода&#8230; </p>http://pyobjc.ru/2008/07/19/vvedenie-v-objective-c/#c322Comment on Введение в Objective-C by Трезвый Скептик2009-02-10T16:07:01Z2009-02-10T16:07:01ZТрезвый Скептик<p>Отцы, объясните мне, дураку, ну чем Obj-C так &#8220;крайне прост&#8221; и в чём выражается эта хвалёная &#8220;концепция software <span class="caps">IC</span>&#8221;, которая, якобы, позволяет &#8220;собирать программы из готовых компонент&#8221;? Ну не вижу я в упор никаких преимуществ! Разве только то что &#8220;на данный момент iPhone <span class="caps">SDK</span> не предоставляет нам выбора каким языком воспользоваться&#8221;, так это ещё не означает что язык так крут как его&nbsp;описывают. </p>http://pyobjc.ru/2008/07/19/vvedenie-v-objective-c/#c293Comment on Введение в Objective-C by Sergey2008-11-30T13:57:18Z2008-11-30T13:57:18ZSergey<p>Правильно ли я понимаю, метод класса, создающий экземпляр данного класса, должен выглядеть примерно&nbsp;так: </p> <p>+(MyObj <em>)objWithDate:(NSDate </em>)anyDate andValue:(float)anyValue&nbsp;{ </p> <pre><code>return [[[self alloc] initWithDate:anyDate andValue:anyValue] autorelease]; </code></pre><p>} </p> <p>Вопрос в autorelease. К месту ли он здесь стоит, и что в таком случае произойдет, когда созданный при помощи такого метода объект&nbsp;&#8221;умрет&#8221;? </p>http://pyobjc.ru/2008/07/19/vvedenie-v-objective-c/#c261Comment on Введение в Objective-C by r132008-10-18T16:06:22Z2008-10-18T16:06:22Zr13<p>Спасибо. Вижу вы регулярно обновляете блог статьями – что в двойне достойно уважения&nbsp;=) </p>http://pyobjc.ru/2008/07/19/vvedenie-v-objective-c/#c254Comment on Введение в Objective-C by fir2008-10-16T08:50:36Z2008-10-16T08:26:41Z fir<p>Я уже перевожу кое-что :) Может и за ObjC.pdf&nbsp;возьмусь&#8230; </p>http://pyobjc.ru/2008/07/19/vvedenie-v-objective-c/#c250Comment on Введение в Objective-C by Александр2008-10-12T00:06:05Z2008-10-12T00:06:05ZАлександр<p>продолжайте в том же духе Ваши статьи нужны&nbsp;программерам </p>http://pyobjc.ru/2008/07/19/vvedenie-v-objective-c/#c68Comment on Введение в Objective-C by cleoag2008-08-10T20:55:00Z2008-08-10T20:54:38Zcleoag<p>Отличная статья. Спасибо за инфо. Решил заняться программингом под iPhone, на русском действительно нет почти инфо. Желаю успехов и так держать!&nbsp;)) </p> <p>ДОбавил в&nbsp;гуглоридер. </p>http://pyobjc.ru/2008/07/19/vvedenie-v-objective-c/#c67Comment on Введение в Objective-C by Daemon2008-08-10T13:48:50Z2008-08-10T00:50:50ZDaemon<p>Как ретайнятся объекты в alloc/dealloc я понял, очень похожий метод применяется в IOKit (на котором я собаку сьел) для&nbsp;С++. </p> <p>ОК, я понял, рейтайнить объект должен тот, кто вызывает геттер, после того, как геттер отработает. Вроде бы все проясняется&nbsp;%) </p>http://pyobjc.ru/2008/07/19/vvedenie-v-objective-c/#c65Comment on Введение в Objective-C by Evgeniy Krysanov2008-08-09T12:40:51Z2008-08-09T12:40:51ZEvgeniy Krysanov<p>При таком присвоении retain не выполняется. Собственно, я описал ниже как все&nbsp;происходит. </p>http://pyobjc.ru/2008/07/19/vvedenie-v-objective-c/#c64Comment on Введение в Objective-C by Evgeniy Krysanov2008-08-09T12:38:54Z2008-08-09T12:38:54ZEvgeniy Krysanov<p>Счетчик ссылок при отдаче в самом get-методе нашего объекта увеличиваться не будет, операция retain будет произведена в принимающем значение объекте. Допустим:<br /> </p> <p>1) изначально мы присвоили obj.caption = @&#8221;some text&#8221;; Строк, инициализованная директивой @&#8221;&#8220;, как я писал в своей более поздней статье, создает строку-константу в памяти. После присвоения этой строки нашему свойству, количество ссылок на нее увеличивается и становится равной 1<br /> 2) Если мы присваиваем значение caption нашего объекта другой переменной, например, следующим образом:<br /> NSString *str = [[NSString alloc] initWithString:obj.caption];<br /> то объект obj просто отдает в своем get-методе ссылку на значение, без совершения опреации retain, которая на самом деле происходит в методе initWithString. Таким образом, после выполнения данного присваивания на нашу строку в памяти будут ссылаться два объекта и потребуется 2 раза вызвать release, чтобы не вызвать утечек: один раз после окончания использования str, второй в деструкторе объекта&nbsp;dealloc. </p>http://pyobjc.ru/2008/07/19/vvedenie-v-objective-c/#c55Comment on Введение в Objective-C by Daemon2008-08-09T12:20:18Z2008-08-08T11:29:14ZDaemon<p>Вопрос в догонку: caption !=&nbsp;NewCaption </p> <p>Это я надеюсь сравнение указателей, а не содержимого&nbsp;строк? </p>http://pyobjc.ru/2008/07/19/vvedenie-v-objective-c/#c54Comment on Введение в Objective-C by Daemon2008-08-09T12:20:23Z2008-08-08T11:28:05ZDaemon<p>Я не о сеттере. Допустим есть у нас какой-то наш класс OurContainer (его инстанс container) у него есть свойство к примеру ourString, которое возвращает NSString и автоматически ее ретайнит. Если мы&nbsp;делаем </p> <p>NSString *str =&nbsp;container.ourString; </p> <p>Произошел автоматом ретайн. Кто должен делать release для str, если: 1. Работает сборщик муссора. 2. Не работает сборщик&nbsp;муссора. </p>http://pyobjc.ru/2008/07/19/vvedenie-v-objective-c/#c53Comment on Введение в Objective-C by Игорь Евсюков2008-08-09T12:39:43Z2008-08-08T00:52:19ZИгорь Евсюков<p>чет я ниче не понял. setter будет&nbsp;такой: </p> <p>-(void) setCaption:(NSString*)NewCaption {<br /> if (caption != NewCaption) {<br /> [caption release];<br /> caption = [NewCaption retail];<br /> }<br /> </p> <p>все происходит как и положено, в чем&nbsp;проблемы? </p>http://pyobjc.ru/2008/07/19/vvedenie-v-objective-c/#c52Comment on Введение в Objective-C by Daemon2008-08-08T00:45:06Z2008-08-08T00:45:06ZDaemon<p>В данном случае: @property (retain) NSString*&nbsp;caption; </p> <p>Как бы явно видно, что перед тем, как объект будет отдан &#8220;во вне&#8221; (через obj.caption), автоматически инкрементируеться его счетчик ссылок. Кто в данном случае должен релизить&nbsp;объект? </p> <p>Как я понимаю если NSString был создан как NSString *str = [NString string], то release будет автоматическим, а если через alloc то нужно release вызывать&nbsp;самостоятельно? </p>http://pyobjc.ru/2008/07/19/vvedenie-v-objective-c/#c33Comment on Введение в Objective-C by Игорь Евсюков2008-08-04T15:34:25Z2008-08-04T15:34:25ZИгорь Евсюков<blockquote><p>хотя он и более удобен на мой&nbsp;взгляд </p> </blockquote><p>ИМХО зря они добавили точку. Как теперь сходу отличить класс от простой струкутры? раньше все было&nbsp;понятно. </p> <p>И к тому же, кода через точку идет присвоение, то на самом деле это не простое присвоение, а вызов функции. Зачем вводить новичков в&nbsp;заблуждение? </p>http://pyobjc.ru/2008/07/19/vvedenie-v-objective-c/#c29Comment on Введение в Objective-C by Evgeniy Krysanov2008-08-04T10:44:44Z2008-08-04T10:44:44ZEvgeniy Krysanov<p>На самом деле, наиболее полного материала, чем вот в этой документации не найти: http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/ObjC.pdf Действительно, очень полное и подробное описание, единственный минус &mdash; на английском, если это имеет значение для тебя&nbsp;:) </p> <p>На русском же языке материала практически нет. Единственное, можно почитать статью в Википедии, ссылку на которую я привел в посте. Статья хорошая для понимания и раскрывает концепции, которые я не описал здесь, дабы не копипастить, что делать не&nbsp;люблю. </p>http://pyobjc.ru/2008/07/19/vvedenie-v-objective-c/#c28Comment on Введение в Objective-C by DnV2008-08-04T02:10:50Z2008-08-04T02:10:50ZDnV<p>Спасибо, очень актуально. Посоветуйте, что ещё почитать на тему. Ну кроме http://developer.apple.com/iphone/ конечно&nbsp;;) </p>http://pyobjc.ru/2008/07/19/vvedenie-v-objective-c/#c21Comment on Введение в Objective-C by Evgeniy Krysanov2008-07-20T12:37:51Z2008-07-20T12:37:51ZEvgeniy Krysanov<p>Совершенно верно. Сборщик мусора, свойства и некоторые другие нововведения были добавлены в Objective-C 2.0, пришедший с Mac <span class="caps">OS</span> X 10.5 и не будут работать на версии ОС ниже данной. Что и говорить про iPhone <span class="caps">SDK</span>, который вобще не будет работать на версиях ниже&nbsp;10.5.3. </p>http://pyobjc.ru/2008/07/19/vvedenie-v-objective-c/#c20Comment on Введение в Objective-C by ZYV2008-07-19T23:31:07Z2008-07-19T23:31:07ZZYV<p>Есть ещё такой момент, что насколько я понимаю, приложения, использующие синтаксис с точкой, хотя он и более удобен на мой взгляд, не будут работать на MacOS версии младше, чем Leopard, т.к. их ObjectiveC runtime его не&nbsp;поддерживает. </p>