Рассмотрим построение проекта на Maui и C# для Mac OS. Но прежде всего следует отметить, что на момент написания данной статьи создавать приложения под MacOS можно было непосредственно на самой Mac OS
Весь код для взаимодействия с платформой MacOs расположен в проекте в папке Platforms/MacCatalyst
Но общий принцип работы приложения будет аналогичен работе приложения под iOS. Работа приложения начинается с кода из файла Program.cs :
using ObjCRuntime; using UIKit; namespace HelloApp; public class Program < static void Main(string[] args) < UIApplication.Main(args, null, typeof(AppDelegate)); >>
Метод Main класса Program служит точкой входа в приложения. В нем же в свою очередь вызывается метод UIApplication.Main() , который определяет суть приложения и который обращается к классу AppDelegate из файла AppDelegate.cs :
using Foundation; namespace HelloApp; [Register(«AppDelegate»)] public class AppDelegate : MauiUIApplicationDelegate < protected override MauiApp CreateMauiApp() =>MauiProgram.CreateMauiApp(); >
А класс Appdelegate, в свою очередь, переопределяет метод CreateMauiApp(), в котором вызывается метод CreateMauiApp() и таким образом реализуется связь с кодом приложения MAUI.
Настройка MacBook для новичков: 20+ полезных фишек macOS
Для создания десктопного приложения под Mac OS в Visual Studio мы сможем выбрать пункт My Mac :
После этого запустится десктопное приложение под mac:
Источник: metanit.com
программирование на mac os для начинающих
10 лучших ресурсов программирования для Mac для начинающих
Научиться программировать свой Mac — отличная идея, и есть множество отличных (и в основном бесплатных) ресурсов, которые помогут вам освоить кодирование.
Codecademy — одно из самых популярных мест для начинающих программистов. Это бесплатный сайт, наполненный интерактивными курсами, которые проведут вас через процесс кодирования. Codecademy превращает кодирование в игру и присуждает очки и награды за завершение.
Курсы также высоко ценятся и охватывают такие популярные темы, как Java, Python, HTML CSS.
Смотрите также:
Секреты Macworld: что такое HTML 5?
Узнайте, как кодировать в Java на Mac
Как настроить и изучить Python-кодирование на Mac
Реклама
следующий
Курс HTML/CSS Advanced | Подготовка компьютера к работе (для MacOS)
Предыдущая
Научиться программировать свой Mac — отличная идея, и есть множество отличных (и в основном бесплатных) ресурсов, которые помогут вам освоить кодирование.
Codecademy — одно из самых популярных мест для начинающих программистов. Это бесплатный сайт, наполненный интерактивными курсами, которые проведут вас через процесс кодирования. Codecademy превращает кодирование в игру и присуждает очки и награды за завершение.
Курсы также высоко ценятся и охватывают такие популярные темы, как Java, Python, HTML CSS.
Смотрите также:
Секреты Macworld: что такое HTML 5?
Узнайте, как кодировать в Java на Mac
Как настроить и изучить Python-кодирование на Mac
Шаг 2 из 10: Лучшие ресурсы для Mac для начинающих: Learn The Hard Way
В отличие от большинства геймифицированных онлайн-курсов, стоит «Learn The Hard Way». Изначально курс «Изучай Python The Hard Way» разветвлялся и охватывал другие предметы, такие как C и SQL.
Learn The Hard Way избегает тонкостей, таких как онлайн-видео и интерактивность, в пользу работы в холодном, жестком мире Терминала. Вы учитесь писать программы в основном текстовом редакторе, запускать и отлаживать их, используя только командную строку.
Смотрите также: Почему программисты считают Mac OS X лучшей ОС для использования
Звучит жестко, и часто так и есть, но такой жесткий любовный подход учит вас программированию, как никакой другой ресурс.
Шаг 3 из 10: Лучшие ресурсы для Mac-программирования для начинающих: Khan Academy
Вам не нужны удивительные математики для обучения программированию: в основном это логика и решение проблем, а не разгадывание математических головоломок. Тем не менее, это хорошая идея, чтобы освежить свои математические навыки во время обучения программированию, чтобы вы одновременно увеличили оба навыка.
Хан Академия может взять вас прямо из самых основ, вплоть до вероятности, статистики и за ее пределами. В нем также есть много видеороликов, объясняющих такие предметы информатики, как нотация Big-O и механизмы сортировки.
Шаг 4 из 10: Лучшие ресурсы для Mac для начинающих: Project Euler
Когда вы начнете изучать программирование, вам нужно будет решить проблемы. Project Euler — это набор задач, созданных для программистов.
Согласно веб-сайту Project Euler, «предполагаемая аудитория включает студентов, для которых базовая учебная программа не питает их жажду учиться, взрослых, чьи знания не были в основном математическими, но интересовались математическими вещами, и профессионалов, которые хотят продолжать решать свои задачи». и математика на переднем крае «.
Шаг 5 из 10: Лучшие ресурсы для Mac для начинающих: Udemy
Существует множество отличных бесплатных ресурсов, которые научат вас программированию. Но Udemy — это то место, куда вы хотите пойти, если вам нужна профессиональная подготовка по программированию. Большинство людей изучают два больших языка: Python и Java, но есть также известные курсы по Swift, HTML и почти всем другим языкам, которые вам понадобятся для успеха.
Курсы могут быть дорогими, но есть частые продажи, поэтому подпишитесь на список рассылки.
Шаг 6 из 10: Лучшие ресурсы для Mac для начинающих: Stack Overflow
Вот один для закладки. Stack Overflow является частью сообщества Stack Exchange, где вы найдете ответы на все ваши вопросы. Вы не можете быть серьезным программистом без учетной записи Stack Exchange; сообщество здесь быстро ответит на все ваши вопросы.
Шаг 7 из 10: Лучшие ресурсы для Mac для начинающих: Swift Playgrounds и iBooks
Новое приложение Swift Playgrounds для iPad, разработанное вместе с iOS 10, научит вас основам программирования на языке программирования Apple Swift. Это также позволяет вам создавать основные программы на iPad и экспортировать их в Xcode на Mac.
Apple также создала несколько отличных книг по программированию для Swift, которые вы найдете в iBooks Store.
Полное руководство по Swift 3 и его новым функциям
macOS Sierra объявлена на WWDC
Предварительный просмотр iOS 10: практические первые впечатления с бета-версией iOS 10
Шаг 8 из 10: Лучшие ресурсы для Mac для начинающих: Codewars
Докажите себя в битве кодов с другими пользователями. Codewars превращает программирование в сложную задачу, когда пользователи создают головоломки для решения друг друга. Вы можете решать проблемы практически на любом языке, включая Python и Java. Это отличный способ изучить типичные проблемы программирования в игровой среде.
Шаг 9 из 10: Лучшие ресурсы для Mac для начинающих: Lynda
Линда является одним из наших любимых ресурсов, и вы можете узнать что угодно о Линде. Это множество программ по обучению, не такое сильное, как сервисы, такие как Udemy, но его учебники искусно созданы. Недавно Линда добавила в свой ассортимент такие курсы, как Python и C, и предлагает хорошие курсы по управлению исходным кодом и информатике.
Шаг 10 из 10: Лучшие ресурсы по программированию для Mac для начинающих: Ray Wenderlich
Если вы заинтересованы в обучении написанию кода для iPhone, то Рэй Вендерлих предлагает ряд курсов с высокой оценкой. Существует множество обучающих программ по Swift, iOS и macOS, а также вы можете изучить Unity и Android на одном сайте. Есть также большой выбор книг, доступных для покупки, хотя некоторые могут быть довольно дорогими. Хотя качество есть, и это отличный сайт для закладок.
Программирование под Mac OS X
Слово
Помните: «В начале было Слово… ». Вот это именно оно. В этой серии статей попробуем разобраться и описать, как можно программировать под Mac OS X, что делать стоит, что не стоит. Ну, и для чего это вообще нужно. Ведь есть масса других систем.
Аргументы…
В пользу каждой операционной системы есть свои доводы. И часто программирование под какую-то из систем — это не вопрос выбора или предпочтений, но часть технического задания. В таком случае спорить (аргументированно) достаточно трудно. И наверное только Mac OS X (и вообще компьютеры Apple) можно хоть как-то отстоять в этом споре за рабочее место.
Пускай нам программировать все-равно на чем. Например, для web. В таком случае чаще всего мы работаем с Apache/MySQL/P(HP/Perl/Python). Тут проблем нет для любой ОС. Но далее — нужно проверять, как все визуально выглядит в браузерах.
И все системы подводит невозможность (легального) запуска Mac OS X для проверки, как будет работать сайт в Safari. А вот наоборот — пожалуйста, сколько угодно. В трех вариантах.
Ладно, пускай даже нам нужно разрабатывать что-то конкретно под Linux/Windows. Вроде бы в этом случае точно нужно выбирать соответствующую платформу, соответствующую ОС. Но постойте, зачем? В виртуальных машинах указанные системы работают блестяще. При этом есть возможность локально эмулировать сеть (запустить сервер в одной VM, клиента в другой), делать снапшоты (сохранять состояние VM на определенный момент времени для последующего отката) и так далее.
И, наконец, никто не запрещает поставить родную Linux или Windows (или обе сразу) на Mac. Обратное сделать нельзя. А вот так — запросто, если нужно.
Есть ли аргументированные минусы у Маков? Да, есть. Патологическая неприязнь. Некоторым нужно что-то конкретное. Например, настраиваемость FVWM. Или разворачивание окна по двойному щелчку мыши на заголовке.
Вот нужно и все тут. В таком случае Mac OS X категорически противопоказан, ничего кроме отрицательных эмоций в таком случае не получается.
и факты…
А факты простые. На конференциях разработчиков все чаще встречаются MacBook’и и MacBook Pro. На них проводятся презентации, демонстрируются прототипы разработок и финальные релизы.
Mac’и вошли в жизнь разработчиков достаточно плотно. А местами просто покорили их. Например, Java разработка. На конференции JavaOne процентов 60 всех компьютеров — это ноутбуки фирмы Apple.
Ну, довольно лирики. Давайте посмотрим, что вообще предоставляет Apple для программирования и как удобно это все настроить, чтобы пользоваться.
Дайте два!
Есть две простые вещи, которые не всегда очевидны и не всегда легко понимаемы разными разработчиками. Особенно теми, кто создает не конечный продукт (Notepad), а платформу для других (1C).
Во-первых, для создания платформы нужно, чтобы на ней что-то работало. То есть чтобы сторонние программисты могли под нее создавать программы. Вспомним, какая шумиха была по-поводу iPhone SDK… Еще бы, практически никогда еще такие SDK не раздавались просто так. И почти никогда они не были настолько качественными.
Или, например, когда разрабатывалась Sony Playstation 3, DevKit (инструментарий разработчика, Developer Toolkit) для нее был готов гораздо раньше самой приставки. Чтобы к выходу приставки уже могли появиться хотя бы несколько игр. Поэтому инструментарий — это важно. Это архиважно. И в Apple это отлично понимают.
Они раздают его бесплатно (к любому Маку на диске с ОС поставляется и SDK), они его очень активно развивают.
Во-вторых, создание большой платформы — это большой труд многих людей (использующих те же Маки). Люди разные, и инструментарий должен быть разнообразным. С этой целью с Mac OS X традиционно поставляется несколько скриптовых языков, уже настроенных для работы. Собственно, Mac OS X — единственная ОС (сейчас начинают появляться Linux’ы), в которой изначально стоит Java.
Поэтому для того, чтобы начать программировать под Mac OS X, не нужно скачивать и устанавливать, например, Python, если вы хотите написать на нем скрипт. Просто садитесь и пишите — оно уже там, уже настроено.
Какой язык программирования лучше всего изучать на моем Mac?
Какой язык программирования я должен изучать на моем Mac? Сравнение лучших языков программирования для программистов, включая Swift, Python, Java, C и Perl.
Кодирование никогда не было более популярным, и научиться программировать в Mac OS X — отличный навык. Но какой язык программирования лучше всего изучать? Есть десятки (если не сотни) языков программирования вокруг, и каждый был разработан для определенной цели.
Поэтому выбор языка программирования для начала может быть реальной проблемой. Стоит ли использовать собственный язык Apple Swift или другого популярного конкурента, такого как Python или Java? Языки на основе C, такие как C, C ++, Objective-C или C #, используются для написания многих программ. Так лучше ли C изучать?
Есть гораздо больше вариантов для рассмотрения: PHP широко используется в Интернете и поддерживает большие сайты, такие как Facebook. И такие языки, как R, MATLAB и Mathematica используются учеными-данными
Или вы должны бросить все это на ветер и выучить язык ассемблера, язык, наиболее близкий к аппаратному обеспечению машины (подсказка: «нет»)
Какой язык программирования лучше всего изучать на моем Mac?
Выбор лучшего языка — сложное дело. Лучшее — это субъективный термин, и мнения о том, какой язык программирования является лучшим, сильно различаются.
Опрос разработчиков Stack Exchange — хорошее место, чтобы узнать, что думают разработчики. Топ 12 самых популярных технологий:
Этот список дает вам довольно хороший обзор того, какие технологии изучать. Читатели с острыми глазами заметят явное отсутствие нового языка Apple Swift в этом списке. Не думайте, что разработчикам не нравится Swift (он считается вторым «самым любимым» языком на Stack Exchange после Rust).
Если разработка iOS-приложений — это ваша игра, то Swift — это язык, который вам нужно выучить. Но похоже, что на других языках больше активности (хотя Swift пользуется большим спросом на Stack Exchange и в следующем году может рассказать совсем другую историю).
Является ли JavaScript лучшим языком для изучения?
Важно не путать JavaScript с Java. JavaScript — это язык сценариев, используемый для создания интерактивных веб-страниц, а Java — язык программирования, созданный Oracle. Java в основном используется для программирования устройств Android.
JavaScript более ограничен, чем Java или другие языки программирования. Но это хорошее место для начала, если у вас нет опыта программирования. Вы можете изучать JavaScript наряду с HTML и CSS для создания ярких веб-сайтов. Вы можете создать что-то довольно ошеломляющее с помощью небольшого JavaScript и быстро увидеть результаты онлайн. И это поможет вам перейти на Java.
Должен ли я изучать Java, Python или Swift на моем Mac?
Спорно, мы будем предполагать, что вы не начинаете с Swift языка Apple. Хотя это невероятно, и мы большой сайт Apple, мы считаем, что это плохой выбор для начинающих.
Существует более широкий спектр учебных ресурсов для Java и Python, чем Swift, поэтому вам будет проще выучить один из этих двух языков. Какой из них вы выберете, это личный выбор, и мы предлагаем вам обосновать его, ответив на один из этих двух вопросов.
Если вы серьезно относитесь к программированию, вы в конечном итоге изучите и Java, и Python. Они универсально используются для обучения программистов и создания приложений.
Должен ли я изучать C на моем Mac?
C — невероятно популярный язык, который использовался с 1970-х годов для обучения программированию. Важно отметить, что он используется Гарвардом в курсе CS50 и используется для обучения всех студентов основам информатики.
Так что с нашей стороны кажется немного глупым отклонить это из-под контроля. Тем не менее, мы не думаем, что вам следует начинать с C. Он более сложен, чем другие языки, и вы быстро увязнете с такими понятиями, как управление памятью и указатели. Слишком легко разочароваться и решить, что программирование не для тебя.
Поэтому, если вы не учитесь на курсе, подобном CS50, и не разбираетесь в своих навыках программирования, мы рекомендуем вам держаться подальше от C и всех других языков на основе C. Вы можете узнать это позже.
А как насчет изучения SQL, PHP и других технологий?
Многие другие перечисленные технологии, такие как SQL, PHP и Ruby, стоит изучить в какой-то момент. Но они не имеют смысла начинать использовать. SQL — это язык базы данных, который обычно используется для хранения и извлечения элементов. Он часто используется на веб-серверах, но также и в приложениях (приложения iOS и Android используют базы данных SQL).
PHP — это язык сценариев, используемый в Интернете, а Ruby используется для создания интерактивных веб-сайтов. Все они в какой-то момент заслуживают изучения, но с них не стоит начинать.
Если вы новичок, изучите HTML, CSS и JavaScript. В противном случае лучшим языком программирования для изучения на вашем Mac является Java. Если вы заинтересованы в механике программирования, изучите Python.
Как только у вас все это заработает, настанет время перейти к другим языкам, таким как Swift и C.
Источник: windorez.ru
Стань X-кодером: Начинаем кодить под Mac OS с помощью Objective-C
Несмотря на то, что для МакОСи можно создавать приложения на C/C++ или Java, Objective-C фактически стал стандартом при разработке под эту операционку. Это произошло благодаря удобному и функциональному API для этого языка — фреймворку Cocoa. Об ObjectiveC и Cocoa мы сегодня и поговорим.
C превращается. в C с объектами
Objective-C появился через год после плюсов, в 1986 году, благодаря работе Brad Cox и Tom Love в компании Stepstone. Они хотели соединить высокий уровень абстракции и повторного использования кода, характерные для объектно-ориентированного программирования, с производительностью и простотой синтаксиса языка С.
Для этого им пришлось модифицировать C, добавив некоторые фичи из Smalltalk, позволяющие работать с объектами. Получившееся объектно-ориентированное расширение языка С впоследствии стало носить название Objective-C — «объектный C». Чтобы понять, как этот продукт скрещивания двух древних языков программирования попал на современные маки и разнообразные мобильные устройства Apple, нужно вспомнить историю яблочной компании. Apple была основана в 1980 Стивом Джобсом и Стивом Возняком.
После многих лет успеха на посту главы компании Джобса сменил бывший управляющий компании Coca-Cola Джон Скалли (John Sculley). Стив покинул Apple и через некоторое время основал новую компанию, назвав ее NeXT. Среди основных задач NeXT было создание операционной системы нового поколения. Для ее разработки было решено использовать среди прочих средств и Оbjective-C — он стал основой для API.
Вскоре операционка от NeXT была готова и получила название NeXTStep. Собственно, это и было первое серьезное применение ObjC. Позже NeXT объединила усилия с Sun Microsystems для создания следующей версии NeXTStep — OPENStep (в настоящий момент продолжает свое существование только GNUStep, поддерживаемая сообществом свободного программного обеспечения).
В середине 1990-х Джон Скалли покинул Apple, которая стремительно теряла свои позиции на рынке. Для спасения ситуации компания решила создать новую операционную систему взамен устаревающей Mac OS. После нескольких неудачных попыток Apple решила купить компанию, которая уже имеет свою операционку. Этой компанией, как ты уже наверно догадался, стала NeXT. Так Джобс снова оказался в Apple, на основе NeXTStep была создана Mac OS X, а Objective-C занял свое место среди инструментов Mac-разработчика и в API Mac OS X.
Разговорчивые объекты
Итак, Objective-C — объектно-ориентированное расширение языка С. А что в нем, собственно, есть такого, чего нет в тех же плюсах? Среди основных достоинств Objective-C нужно перечислить следующие:
- Синтаксис Objective-C очень прост. Чтобы его изучить, С-программисту понадобится всего пара дней. Он является именно расширением языка С, в него просто добавлены новые возможности для объектноориентированного программирования. Таким образом, абсолютно любая программа на С является программой и на Objective-C (что для С++, вообще-то, неверно).
- Objective-C — message-oriented language, то есть объекты в нем общаются между собой не с помощью явного вызова инкапсулированных функций, как в C++ или Java, а при помощи отправки друг другу сообщений.
Это позволяет объекту-отправителю легко формировать нужное сообщение во время выполнения приложения, а объектуполучателю — принимать произвольные сообщения, обработка которых не была в нем реализована явно, так как поиск кода, выполняемого при получении объектом сообщения, осуществляется во время выполнения, а не на этапе компиляции программы. Так, если среда выполнения не находит в интерфейсе объекта сигнатуры входящего сообщения, ему все равно дается шанс обработать это сообщение с помощью специального метода. Подобная динамическая реализация вызова методов делает систему более гибкой, лишь незначительно понижая ее производительность.
Язык Objective-C предоставляет широкие возможности для работы с метаинформацией; так, у любого объекта непосредственно на этапе выполнения можно спросить его класс, список методов (с типами передаваемых аргументов) и instance-переменных, проверить, является ли класс потомком заданного и поддерживает ли он заданный протокол (протокол — это список сообщений, на которые отвечает данный объект, некоторое подобие абстрактных классов C++ или интерфейсов Java) и т.д.
Здравствуй, мир!
Линус Торвальдс как-то сказал: «Разговоры — дешевка. Покажите мне код!». Показываю! Вот код HelloWorld , а на Obj-C. Кстати, если у тебя нет под рукой Mac OS X или хакинтоша, можешь попробовать в действии Objective-C и Cocoa c помощью GCC и проекта OpenStep.
Наша первая прога на ObjC
Наш HelloWorld сильно напоминает C++, не так ли? Но есть и свои особенности, которые ты, конечно, сразу заметил.
- #import — директива препроцессора, аналогичная #include, но, в отличие от последней, она не позволяет включить заголовок более одного раза, то есть работает так же, как стражи включения в C++ (#include, разумеется, тоже поддерживается).
- Cocoa.h — заголовок, содержащий описания функций, классов и констант фреймворка Cocoa, о котором я говорил в начале.
- NSLog — одна из таких функций. Она выводит текстовое сообщение в stdout вместе с timestamp’ом в начале строки. Помнишь NeXTStep? Префикс «NS» как раз оттуда :).
Строки в Objective-C — отдельная история. NSLog получает на вход не C-строку, а объект класса NSString. Заметил собаку перед строкой в NSLog? Это указание компилятору ObjC создать константу типа NSString — в Сocoa используются не zerro-terminated строки, как в C, а объекты класса NSString или его наследников (NSMutableString например).
Создатели Cocoa позаботились о том, чтобы в NSString были реализованы все методы работы со строками, которые тебе чаще всего приходится использовать. Строки можно склеивать, разбивать по разделителю, искать в них подстроки, делать форматированный вывод и много чего другого.
На скриншоте ты можешь видеть код нашего простенького примера в среде XCode и результат его выполнения. XCode — это среда разработки, используемая при написании приложений для Mac OS и iOS. В ней довольно удобно работать, но, как и ко всему новому, к ней нужно привыкнуть.
Кроме редактора и отладчика в нее интегрированы средства построения пользовательского интерфейса — «Interface Builder», управления версиями — «SCM» и еще множество всяких полезных фишек. В качестве компилятора используется допиленный Apple GCC. В качестве отладчика — GDB. В настоящий момент на сайте Apple свободно доступна для скачивания XCode 3, пробная версия XCode 4 доступна только для зарегистрированных Appleразработчиков. В общем, качай, устанавливай, пробуй.
Рабочий класс
Раз язык объектно-ориентированный, значит, в нем должны быть объекты. Давай посмотрим, как их создавать и использовать в Objective-C. Каждый класс в коде на Objective-C разделен на интерфейс и реализацию, которые принято хранить в отдельных файлах. Заголовочные файлы получают расширение «h», а файлы с реализацией — «m».
В интерфейсе класса описывается его имя, класс-предок, если такой есть, реализуемые протоколы, список публичных, приватных и защищенных полей, сообщения, на которые отвечает класс и объекты этого класса.
Для вызова метода используется следующий синтаксис:
[my_class_pointer message_name: arg1 arg2_name: arg2 arg3_name: arg3]
Немного непривычно после точек и стрелок C++ и Java, но к такому синтаксису быстро привыкаешь и даже начинаешь считать его удобным. Что интересно, мы можем посылать сообщения нулевому указателю (nil). Результат всегда будет nil.
После того, как класс описан и определена реализация для методов-обработчиков сообщений, можно создавать объекты этого класса.
Для того, чтобы создать объект, нужно сделать две вещи — выделить для него память и инициализировать ее. В Objective-C эти два действия разделены. Это может показаться излишним, но на самом деле придает процессу создания объектов дополнительную гибкость.
Чтобы создать объект Dog, нам потребуется следующая строчка:
Dog * dog1 = [[Dog alloc] init];
alloc — метод класса NSObject. Он выделит необходимое количество памяти под наш объект и вернет указатель на него. После этого мы можем выполнить инициализацию, послав только что созданному объекту сообщение init. Мы не переопределяли обработку сообщений alloc и init, поэтому будут использованы реализации из NSObject. На практике init часто приходится переопределять для того, чтобы произвести какую-то начальную настройку объекта или передать дополнительные параметры. init играет роль конструктора в ObjC.
Теперь, когда мы создали экземпляр класса, мы имеем полное право отправлять ему сообщения:
int age = [dog1 getAge];
[dog1 voce];
Для того, чтобы уничтожить объект и освободить выделенную ему память и (возможно) другие ресурсы, ему нужно отправить сообщение release:
Управление памятью реализовано в ObjC в виде подсчета ссылок. alloc создает объект с числом ссылок, равным единице. release уменьшает количество ссылок для данного объекта на 1. Объект будет уничтожен, когда счетчик достигнет 0. Если тебе когданибудь приходилось использовать COM, то такая реализация управления памятью должна быть тебе хорошо знакома.
Значение счетчика можно увеличивать, посылая объекту сообщение retain. Кстати, начиная с Objective-C 2.0, стала доступна сборка мусора, ее можно совмещать с классическим управлением памятью с помощью подсчета ссылок. Кроме явного уничтожения объекта, ты можешь добавить его в пул временных объектов (NSAutoreleasePool), послав сообщение autorelease. Так часто поступают, например, при возвращении объектов методы классов Cocoa (метод stringByAppendingString объектов NSString, например).
NSAutoreleasePool *pool;
pool = [[NSAutoreleasePool alloc] init];
NSString *str;
// Проинициализируем строчку и добавим
// ее в pool
str = [[[NSString alloc] init] autorelease];
// .
[pool drain]; // Здесь объект str будет уничтожен
В этом кратком обзоре ObjC следует, пожалуй, сказать еще об исключениях Objective-C. Обработка ошибок времени выполнения в С трудоемка и может порождать множество других ошибок. На самом деле в C есть два варианта обработки ошибок времени выполнения — возвращение значения функцией и изменение значения глобальной переменной (errno например). В обоих случаях необходимо проверять результат работы каждой функции, выполнение которой может вызвать ошибку.
Код нормального процесса исполнения и код обработки ошибок смешивается, что не есть хорошо. К счастью, в ObjC, как и в C++, есть механизм исключений.
Вот пример обработки исключительной ситуации в ObjC:
Обработка исключений в Objective-C
Конечно, описать полностью стандарт языка в одной короткой статье невозможно. Поэтому, если ты заинтересовался, я привел ссылки на некоторые полезные ресурсы.
«Кокао» для кодера
После экскурса по Objective-C можно поговорить о доступных фреймворках МакОСи. Куда же без них? Фреймворк сделает за тебя всю грязную работу, чтобы ты мог спокойно заниматься основной задачей.
Для разработки нативных приложений под МакОСь распространение получили два фреймворка — Cocoa и Carbon. Если ты пишешь под Мак или под iOS на Objective-C, то твой выбор — Cocoa.
Cocoa — это продукт эволюции программных сред NeXTSTEP и OPENSTEP, которые разрабатывались компанией NeXT. Перекочевав на Mac OS X, фреймворк сильно изменился, и в нем появилось множество новых классов. Все они, как в С# или Java, являются наследниками одного класса — NSObject.
В Cocoa представлены базовые типы, такие как NSNumber и NSString, различные контейнеры (NSArray, NSDictionary), обертки для системных объектов и т.д. Давай-ка опробуем Cocoa и Objective-C в действии и создадим небольшое консольное Cocoa-приложение.
В Сети существует множество веб-сервисов. Некоторые из них просто предоставляют информацию в удобном формате, например, в XML.
Одним из таких сервисов является сервис Российского Центробанка, предоставляющий информацию о текущих курсах валют. По адресу www.cbr.ru/scripts/XML_daily.asp можно получить XML’ку следующего вида:
Создадим класс ObjC RCBDayly, который будет скачивать эту XML’ку, парсить ее и предоставлять данные в удобном для нас виде. Исходник нашего класса ты можешь увидеть на врезке.
На этом примере ты можешь видеть, как легко в Cocoa работать с сетью и XML. При создании подобных приложений можно обойтись, конечно, и средствами POSIX, а вот если ты хочешь создать GUI-приложение, без Cocoa тебе не обойтись. Но об этом как-нибудь в другой раз.
Заключение
Разнообразные гаджеты от Apple производятся и продаются по всему миру в огромном количестве. Всех их объединяет то, что на них работает Mac OS X или iOS и, если ты хочешь освоить разработку под эти операционки, знания Objective-C тебе очень пригодятся. До встречи в эфире!
Исходник нашего XML-парсера
Cocoa Framework
Cocoa — набор классов и функций Objective-С, предоставляющих доступ к сервисам Mac OS X для пользовательских приложений. Поскольку для взаимодействия с классами Cocoa необходима среда выполнения ObjC, разработка с использованием этого фреймворка возможна только на Objective-C. Для Сocoa существует возможность кроссплатформенной разработки под Linux и Windows благодаря проектам GNUStep и cocotron.
Carbon Framework
Carbon — процедурный фреймворк Mac OS X, предназначенный для использования в приложениях на C/C++. Он предоставляет обратную совместимость с более ранними версиями Mac OS (например, Mac OS 9).
В настоящее время возможности Carbon для работы с Mac OS X становятся все скромнее. Так, например, невозможно получить доступ к GUI из приложения Carbon для 64-битного окружения — Apple отдает предпочтение Cocoa.
Links
- developer.apple.com — если есть вопросы, касающиеся разработки под Mac OS
- www.cimgf.com — неплохой блог о Cocoa и Objective-C
- www.gnustep.org — сайт проекта GNUStep
- www.cocotron.org — кроссплатформенная разработка с использованием ObjC, XCode и Cocoa для Windows
Источник: xakep.ru