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>не совсем,
</p>
<p>можно сделать “private” сообщения – в .m-файле написать до @implementation
</p>
<p>@interface MyClass() // <= пустые скобки!!
— (void)doSomething; @end
</p>
<p>@implementation MyClass
//реализация всего, включая doSomething @end
</p>
<p>то затем при вызове внутри класса MyClass, например [self doSomething]; все будет работать, но при вызове этого метода извне, будет бросаться исключение undefined 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>да, это примерно тоже самое. Разница есть, но не на поверхностном уровне
</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 — это аналог this в С++?
</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++, то каждбый чудак на букву “М” мог-бы клепать код под креативы Apple. А так — хрен вам. Учите новый язык и новую матчасть. А не хотите — покупайте компилятор Intel-а за $400. Но учтите, он будет фурычить только на процессорах тов. Оттолини. Вот все материли Билла Г. за Windows и .<span class="caps">NET</span> и C#, не говоря уже о бредовом Managed C++-е (бедняга даже уволился из фирмы из-за критики), а он в последней студии C++ оставил и даже творчески развил в соответствие со стандартом. Человеком с большой Б(буквы) оказался, не то, что спятивший Джобс. Понятно, когда буржуй получает $1 в год, он с зависти беситься начинает и изобретать всякую хрень, что-б только народу нагадить. Вот и тут так. Учите Карлсона и Энгельсона. Они это ещё 150 лет назад знали.
</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">“</span>Реализация класса — ClassName.m файл, содержащий фактический код для этих методов. Он также часто определяет частные методы, которые не доступны вне класса или экземпляра класса.”
Нету там недоступных методы. Все методы одинаково доступны — посылай сообщение и он прекрасно выполнится. В objC нету private и protected методов.
</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>Вы написали про управление памятью следующее:
</p>
<p>// string1 будет удалена сборщиком мусора в автоматическом режиме
NSString<em> string1 = [NSString string];
// для string2 вы должны будете вручную вызвать release метод
NSString</em> string2 = [[NSString alloc] init];
[string2 release];
</p>
<p>Вопрос. А если NSString* ссылается на константу, следует ли освобождать память руками?
Пример:
NSString<em> baseDescription = [super description];
а в суперклассе description таков:
-(NSString</em>) description
{
return @”<span class="caps">SOME</span> <span class="caps">STRING</span>”; }
</p>
<p>Я так полагаю, что освобождать память в данном случае не требуется руками. Тогда подскажите, как лучше организовать код для исключения ошибок типа утечки памяти, двойного освобождения памяти и т. п.? Дело в том, что я пришел к Objective-C из мира .<span class="caps">NET</span> и Java, поэтому не имею практики написания грамотного Си кода…
</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 так “крайне прост” и в чём выражается эта хвалёная “концепция software <span class="caps">IC</span>”, которая, якобы, позволяет “собирать программы из готовых компонент”? Ну не вижу я в упор никаких преимуществ! Разве только то что “на данный момент iPhone <span class="caps">SDK</span> не предоставляет нам выбора каким языком воспользоваться”, так это ещё не означает что язык так крут как его описывают.
</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>Правильно ли я понимаю, метод класса, создающий экземпляр данного класса, должен выглядеть примерно так:
</p>
<p>+(MyObj <em>)objWithDate:(NSDate </em>)anyDate andValue:(float)anyValue {
</p>
<pre><code>return [[[self alloc] initWithDate:anyDate andValue:anyValue] autorelease];
</code></pre><p>}
</p>
<p>Вопрос в autorelease. К месту ли он здесь стоит, и что в таком случае произойдет, когда созданный при помощи такого метода объект ”умрет”?
</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>Спасибо. Вижу вы регулярно обновляете блог статьями – что в двойне достойно уважения =)
</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 возьмусь…
</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>продолжайте в том же духе Ваши статьи нужны программерам
</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, на русском действительно нет почти инфо. Желаю успехов и так держать! ))
</p>
<p>ДОбавил в гуглоридер.
</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 (на котором я собаку сьел) для С++.
</p>
<p>ОК, я понял, рейтайнить объект должен тот, кто вызывает геттер, после того, как геттер отработает. Вроде бы все проясняется %)
</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 не выполняется. Собственно, я описал ниже как все происходит.
</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 = @”some text”; Строк, инициализованная директивой @”“, как я писал в своей более поздней статье, создает строку-константу в памяти. После присвоения этой строки нашему свойству, количество ссылок на нее увеличивается и становится равной 1<br />
2) Если мы присваиваем значение caption нашего объекта другой переменной, например, следующим образом:<br />
NSString *str = [[NSString alloc] initWithString:obj.caption];<br />
то объект obj просто отдает в своем get-методе ссылку на значение, без совершения опреации retain, которая на самом деле происходит в методе initWithString. Таким образом, после выполнения данного присваивания на нашу строку в памяти будут ссылаться два объекта и потребуется 2 раза вызвать release, чтобы не вызвать утечек: один раз после окончания использования str, второй в деструкторе объекта 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 != NewCaption
</p>
<p>Это я надеюсь сравнение указателей, а не содержимого строк?
</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 и автоматически ее ретайнит. Если мы делаем
</p>
<p>NSString *str = container.ourString;
</p>
<p>Произошел автоматом ретайн. Кто должен делать release для str, если:
1. Работает сборщик муссора.
2. Не работает сборщик муссора.
</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 будет такой:
</p>
<p>-(void) setCaption:(NSString*)NewCaption {<br />
if (caption != NewCaption) {<br />
[caption release];<br />
caption = [NewCaption retail];<br />
}<br />
</p>
<p>все происходит как и положено, в чем проблемы?
</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* caption;
</p>
<p>Как бы явно видно, что перед тем, как объект будет отдан “во вне” (через obj.caption), автоматически инкрементируеться его счетчик ссылок. Кто в данном случае должен релизить объект?
</p>
<p>Как я понимаю если NSString был создан как NSString *str = [NString string], то release будет автоматическим, а если через alloc то нужно release вызывать самостоятельно?
</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>хотя он и более удобен на мой взгляд
</p>
</blockquote><p>ИМХО зря они добавили точку. Как теперь сходу отличить класс от простой струкутры? раньше все было понятно.
</p>
<p>И к тому же, кода через точку идет присвоение, то на самом деле это не простое присвоение, а вызов функции. Зачем вводить новичков в заблуждение?
</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
Действительно, очень полное и подробное описание, единственный минус — на английском, если это имеет значение для тебя :)
</p>
<p>На русском же языке материала практически нет. Единственное, можно почитать статью в Википедии, ссылку на которую я привел в посте. Статья хорошая для понимания и раскрывает концепции, которые я не описал здесь, дабы не копипастить, что делать не люблю.
</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/ конечно ;)
</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>, который вобще не будет работать на версиях ниже 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 его не поддерживает.
</p>