Вопрос

Будучи довольно опытным разработчиком PHP и неплохо разбираясь в C (написал эксперимент с распределенными вычислениями с 16 микроконтроллерами NEC моего отца), я хотел бы перейти на Objective-C и Cocoa, в конечном итоге стремясь интегрировать приложения для Mac / iPhone с некоторыми из моих PHP-проектов.

Просматривая книгу Аррона Хийлегасса "Программирование Cocoa для Mac OS X", я немного расстраиваюсь.Я могу работать с примерами, но он не объясняет точно почему он использует класс таким образом (например, NSNumber вместо int или double).

Я ищу хорошую книгу / books, чтобы сначала использовать Objective-C.Мой вопрос в том, какая книга была бы хорошей?Я смотрю на "Программирование на Objective-C 2.0", и это выглядит довольно прилично.Куда бы я пошел оттуда?Я думаю, что тогда мне следует возобновить работу над моей книгой о Какао.

Кроме того, есть ли какие-либо ресурсы в Интернете, которые помогли бы при переходе с PHP на Objective-C?Я знаю, что PHP - это свободно типизированный скриптовый язык, поэтому у него есть свои отличия.Есть некоторые вещи, которые просто не имеют смысла с Obj-C и Cocoa, почему я не могу поместить целые числа в NSMutableArray?

В любом случае.Спасибо за помощь!(Мне всего 14, так что будь со мной помягче, если я допустил какие-либо ошибки в своем Q.)

Это было полезно?

Решение

Я сам только что прошел курс "Программирование на Objective-C 2.0", и это довольно неплохо.Я бы порекомендовал это, особенно если вы никогда не использовали C (или если вы забыли его, как я).

Однако у Apple действительно есть отличная документация.Если вы не возражаете читать онлайн, я бы начал с их Начало работы с Какао Страница.

Другие советы

Я могу работать с примерами, но он не объясняет точно, почему он использует класс таким образом (например, NSNumber вместо int или double)...

Есть некоторые вещи, которые просто не имеют смысла с Obj-C и Cocoa, почему я не могу поместить целые числа в NSMutableArray?

NSNumber является гораздо более полезным типом, чем примитивный тип, такой как int или double, поскольку он часто используется в сочетании с другими объектами, с которыми вы столкнетесь при программировании в Cocoa.

Например, для того, чтобы упаковать число в виде значения в массив с изменяемым размером (например, NSMutableArray) или ассоциативный массив (экземпляр NSDictionary), вам нужно превратить числовой примитив (int, double, и т.д.) в сериализуемый, или архивируемый объект — an NSNumber.

Примитивы не могут быть сериализованы, в отличие от NSNumber, потому что примитивы не входят в базовый набор типов "Core Foundation" (NSNumber, NSArray, NSString, и т.д.), над которыми Apple усердно работала, чтобы сделать их доступными для вас.

Кроме того, используя NSNumber вы также получаете множество дополнительных удобных методов бесплатно:вы можете быстро преобразовать число в строку, например, просто набрав [myNumber stringValue].

Или, если вы лечите свой NSNumber в качестве цены чего-либо ("1,23 доллара") вы можете применить NSNumberFormatter чтобы убедиться, что операции с числом дают результаты, имеющие формат, который вы ожидаете (напримересли вы добавите два значения цены, вы ожидаете получить взамен значение валюты).

Это не значит, что вы не можете или не должны использовать int или double переменные.Но во многих случаях вы обнаружите NSNumber это лучший вариант, поскольку вы можете написать меньше кода и получить много функциональности "бесплатно".

По моему опыту, я обнаружил, что Internet docs достаточно полезны при изучении Obj-C и CocoaTouch.Мой прогресс был примерно таким:

1) Посмотрите видеоролики Apple Dev на iTunes (они бесплатны).

2) Читать Приступая к работе, Руководство по программированию приложений для iPhone.

3) Читать ООП В Obj-C.

4) Читать дальше: Основы какао, Грунтовка для Objective-C, Практика приготовления какао.

5) Выполните несколько простых обучающих программ.

ИМО:Вся необходимая информация находится на сайте Apple Dev: iPhone.Экономьте свои деньги и не покупайте книги.Если вы не понимаете, "ПОЧЕМУ" что-то сделано в одном из руководств или руководств по эксплуатации, немедленно сопоставьте это с другими источниками из Google.

Вы должны иметь в виду, что кривая обучения вот довольно большой. Это было для меня, и я изучаю подобные вещи каждый день в колледже.Так что придерживайтесь этого и читайте разумно (просматривайте то, что вы знаете).Что я вижу в себе, так это то, что если я понимаю, как работает iPhone, и знаю поток данных, то программирование для него - это в основном проблема синтаксиса.

PHP сильно отличается от Objective-C.Более того, способ решения задач программирования на PHP в контексте Интернета сильно отличается от способа решения задач программирования на Obj-C в контексте iPhone.Из-за этого вы хотите подойти к iPhone с новой точки зрения и как ученик.Не торопитесь и сосредоточьтесь на объектно-ориентированном программировании и лучших практиках.Это благословит вас на долгие годы.

-Буффало

Кроме того, чтобы ответить на ваши вопросы:

Objective-C - это объектно-ориентированный язык, построенный как расширение поверх C.

Как таковой, он предоставляет как примитивные типы (такие как int и double), так и объекты.

NSNumber - это класс Objective-C, который представляет число Плюс ряд операций над этим числом (методы).Преимущество использования NSNumber перед числовым примитивным типом заключается в том, что его можно использовать объектно-ориентированным способом (вы можете отправлять ему сообщения, вы можете расширить его функциональность с помощью "протоколов", вы можете наследовать от него, вы можете передать его в методе, который ожидает объект и т.д.).

Что касается NSMutableArray , это класс, который предоставляет функциональность, подобную массиву.Он предназначен для работы с типами объектов Objective-C (это контейнер объектов типа NSObject и объектов, которые наследуются от них), и это причина, по которой он не может содержать целое число.Однако он может содержать NSInteger, который является классом objective-C, представляющим целое число.

Лично я бы попытался сначала изучить Objective-C по ссылкам Apple на http://developer.apple.com/library/mac/navigation/ и оттуда переходим к какао.

Я был в похожей ситуации (переход PHP на Objective-C), и я обнаружил, что лучший процесс - это перейти к проекту.Я также просмотрел книгу Хиллегасса, и это было хорошее начало, но единственный способ лучше узнать язык - это просто разобраться с четкой целью.

Это болезненно, но это работает.Кофе, АПИ и салфетки.

Редактировать:Я только что прочитал последнюю часть твоего поста и увидел, что тебе 14.Возможно, замените кофе кока-колой:)

Мой любимый учебник по Objective-C, если вы вообще откуда-либо приехали, - это курс iTunesU из Стэнфорда по программированию на iOS.Профессор действительно рассматривает вещи в перспективе, исходя из других книг и онлайн-руководств.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top