Pull to refresh

Comments 43

О боже. Ну сколько можно уже про хелловорды рассказывать? При чем на таких платформах, на которых они в три клика делаются.
После таких IDE как Qt Creator и Visual Studio немного непривычно работать с XCode. Неплохой пример, демонстрирующий процесс разработки с использованием XCode.
Автор проделал большой труд. Упорядочнено написал про iOS шаги…

Пользовался QT ,Visual Studio… Когда начинал работать с xCode не хватало такого простого и понятного примера. Спасибо за статью
Не понимаю, что сложного в работе с InterfaceBuilder, все так же, как в той же студии, перетаскиваем объекты драгендропом, по клику на объекте можно править его свойства. Можно даже проще делать, включаем отображение в режиме Assistant, и перетягиваем кнопки прямо в код, IB сам создаст оутлеты или экшены, при этом не забудет подчистить память в деалоке и вьюВилДисапир. Кстати, про управление память в статье вообще ни слова, хоть бы мозги в авторелиз засунули, это же статья для новичков, зачем показывать как делать нельзя.
если статьи делаются по видеолекциям стендорда, то все правильно, так задумано.
я тоже их сейчас смотрю, разделу управления памятью посвящена отдельная лекция и там в качестве задания было пофиксить утечки памяти
Ну нечитабельный же код. Используйте <source lang="...">...</source>
спасибо буду знать на будующее
вообще, если бы внимтельно прелюдию написал я пишу статьи адаптированые с курса cs193p под sdk5. Это учебный стенфорда. Будут и другие статьи. А если хочешь оспорить учебную программу это не ко мне.
Да хоть Кембриджа. Неужели нет более интересных тем, чем рассусоливание хелловордов?
не нравится можешь не читать ) в чем проблема то?
просто чтобы появились интересные проекты — надо научится, и чтобы люди научились, а потом начали писать эти проекты. А если люди не будут уметь, откуда твои интереные темы возьмутся?
1. Если бы ты потрудился полистать темы блога «Разработка под Apple iOS», ты бы нашёл подобные хеловорды.

2. Опять же, листая темы этого блога можно заметить, что уровень хабрапользователей не такой уж низкий в этом вопросе, чтобы подсовывать вот такие калькуляторы.

3. Я конечно могу и не читать, но моё замечание было более конструктивным: может поищешь более интересные темы? Или будешь кропать хеловорды?
Имхо, но чем больше «хеловордов», тем лучше. Когда я только начинал знакомиться с iPhone SDK (тогда он еще так назывался) — было мало хеловордов на русском. И я был бы очень рад находя такие вот хелло ворды.
я тоде сталкивался с подобными проблемами, особенно с тем, что написатели статей опускали очень много важных вещей. Имеенно по этмоу я сделал подробные скрины для постоения интерфейса
Несколько дней назад вышли новые курсы с Xcode 4 и iOS5 (по крайней мере первая часть с калькулятором там доступна). Так что смысла этих адаптаций больше нет (разве что перевод).
как раз их ждал… значит буду заниматься просто переводом. Если конечно люди оценивать будут. Если будут встречать таким же негативом просто запихаю к себе в блог :)
Да не переживайте, продолжайте писать для Хабра.
«Негатив» у многих хабраюзеров появляется от того, что «хелловорлд'ная» статья используется для «прохождения» песочницы. Такие статьи безусловно полезны, но «бывалым» хочется видеть среди «нубисов» каких-нибудь случайно откопанных гуру, Вассермана, к примеру.
ну, я не виноват что курс начинается с хелоуворда :)
А что будет, если каким-либо случайным образом view будет выгружено из памяти? (например если приложение свернуть и долго не открывать и в это время играть в мощные игрушки). В таком случае неплохо было бы иметь модели метод, который вернет то, что должно быть на «экране» калькулятора. И в viewDidAppear например присваевать это значение label'у.

Мне кажется, модель у нас немного зависима от представления. Т.е. если мы на view заменим title кнопок с действиями на «сложение», «умножение» и т.д. то конструкции вида:

if ([@"+" isEqual:waitingOperation]) {
    operand = waitingOperand + operand;
}


Будут выдавать неправильный результат. Может быть лучше добавить для каждой кнопки tag и объявить enum с тагами кнопок-действий?

enum {
    kButtonAdd = 1,
    kButtonDivide,
    // и так далее
};


В модель передавать таги и проверять так (или заменить на switch):
if (waitingOperation == kButtonSum) {
        operand = waitingOperand + operand;
}
Впринципе согласен с замечанием, так бы было даже правильнее сделать, потому что преобразование string в double всервно будет занимать ресурсы пускай и незначительны, а при написании больших проектов эта привычка даст о себе знать.
Вообще предложенная модель принадлежит не автору статьи, а лектору Стенфордского университета. Честно говоря, там у них все немного странное, и слушаая лекции, нужно быть хорошо подготовленным, чтобы ко всему относится критично. Поэтому лично я считаю эти лекции плохим стартом для начинающего.
Я и не отрицаю что данная модель не моя. Я даже в начале писал что моя статья это всеголишь перевод и некоторая адаптация на sdk5… потому что лекции по sdk5 только только собираются выйти в свет
О, спасибо за ссылку, никак ни мог найти.
Paul Hegartly или как его. Отлично все описал, я по не му учился. Но этот пример это копипаст его лекции, не по хабру.
Методы класса- тут все просто setOperand- это обычный сеттер для переменной operand. Можно было бы использовать и @syntesuze но тогда будет сгенерирован геттер который нам никчему.

Свойства не обязательно синтезировать. Геттер и сеттер можно реализовать вручную. При этом поле _operand можно использовать автоматически. И в контексте задачи, геттер операнда никому особо бы не помешал.
подчеркивания — противоречат code style, они зарезервированы приватными структурами Эппла.

Avoid the use of the underscore character as a prefix meaning private, especially in methods. Apple reserves the use of this convention. Use by third parties could result in name-space collisions; they might unwittingly override an existing private method with one of their own, with disastrous consequences. See “Private Methods” for suggestions on conventions to follow for private API.
ну, если идти путем минимализации использования данных то геттер будет занимать память- что впринципе ни к чему. На калькуляторе это не скажется, а вот мусор в больших проектах скажется.
Осмелюсь сделать замечание — для опытных разработчиков Ваш топик хорош наивностью.
Для новичков маловато разжеван — смело добавляйте подсказки что тако IB, и объясняйте в чем его преимущество перед программным созданием контролов.

По мельчайшим шагам и с комментариями — вспомните себя при создании первого проекта.
Я решил попробовать но до конца не дошел. И вправду для опытных это смех и только, а для первого раза многое непонятно.

Дошел до места:

«Теперь опишем все наши методы.

— (void)setOperand:(double)aDouble{
operand = aDouble;
}
— (double)performOperation:(NSString *)operation{
if ([operation isEqual:@»sqrt"]) {
operand = sqrt(operand);
}
return operand;
}
"

И куда это писать? Логично что в CalcBrain.h но когда это пишешь редактор выставляет восклицательные знаки мол ошибка, и все такое. Потому лично для меня это место пока Стоп.
Посмотрел один урок на Ютубе и стало все понятно. Думаю для начала нужно всем начинающим хотя бы поглядеть видео примеры чтоб понятно стало как это все работает. Потому как с нуля это непросто.

Сейчас допишу по вашему примеру.
Описания методов логично писать в @implementation в *.m файле. Начинающим полезно прочитать хотя бы одну книжку по Objective-C и Cocoa, тогда такие вопросы сразу отпадут. На туториалах далеко не уедешь. :)
UFO just landed and posted this here
Эх, хороший вроде туториал, а нажатие повешено на touchDown :(
touchUpInside же!
Верните картинки, пожалуйста. Или это только у меня не отображаются?
Программа очень похожа на первую из стэнфордских лекций 2012 года, оттуда идея?
не хочу читать все, хочу читать по диагонали и задавать глупые вопросы. В первом абзаце написано что это и откуда.
Sign up to leave a comment.

Articles