Розробка додатків для Mac для LuckyTemplates Шпаргалка

Розробка додатків Macintosh вимагає креативності, навичок програмування на Objective-C, певного терпіння та гарної наполегливості, щоб реалізувати, удосконалити та доставити вашу програму Macintosh у належному робочому стані своїм користувачам. На шляху до цього пункту призначення ви зіткнетеся з деякими проблемами, які перевірять ваші навички програмування та вирішення проблем. Ви повинні впоратися (серед іншого) з використанням делегатів для реалізації зворотних викликів програми; використання не-Objective-C фреймворків від Apple; і включення коду C++ у ваші програми.

Реалізація зворотних викликів у програмах Macintosh

Розробка додатків Macintosh використовує зворотні виклики, щоб дозволити Mac OS X виконувати код у вашій програмі для певних операцій. Якщо ви створюєте стандартну програму для Macintosh на основі вікна або документа, перший код, який виконуватиме OS X, міститься в одному з наступних методів зворотного виклику, які ви повинні створити для своєї програми, залежно від дизайну програми:

  • Програми на основі вікна: (void)applicationDidFinishLaunching:(NSNotification*)aNotification

  • Програми на основі документів: (void)windowControllerDidLoadNib:(NSWindowController*)windowController

Зворотний виклик — це просто метод, який в кінцевому підсумку виконує ОС, коли вона намагається надати або отримати інформацію з вашої програми. Ваш код програми виконає метод для класу Cocoa, де ваша програма матиме можливість надати ім’я методу одного з ваших класів, який буде викликаний для об’єкта цього класу, який також має надати ваша програма.

Делегат є допоміжним об'єктом, який класом какао використовує для розширення функціональних можливостей класу, дозволяючи реалізувати код, клас Cocoa буде виконувати при певних обставинах. Клас Cocoa перевіряє свій об'єкт делегата (якщо він призначений), чи забезпечує делегат реалізацію певного методу. Якщо делегат має цей метод, клас Cocoa виконує цей метод; якщо делегат не реалізує цей конкретний метод, клас Cocoa або використовує власний метод за замовчуванням, або реєструє помилку. Більшість делегатів повинні включати певний протокол, який визначає, які методи вони можуть застосовувати; делегати вашого коду повинні використовувати методи реалізації з конкретного протоколу, який очікує делегат.

Ось деякі з об’єктів Cocoa, які можуть використовувати делегатів для виконання вашого коду:

  • NSTableView. NSTableView приймає делегата, який підкоряється протоколу NSTableViewDelegate. Це включає від 20 до 30 методів, які об’єкт делегата вашої програми може реалізувати для підтримки потреби вашої програми знати, що робить NSTableView. Існують методи, які будуть викликатися у вашій програмі, коли їй потрібно знати дії та реагувати на них, наприклад, коли користувач робить вибір у таблиці або коли змінюється розмір стовпця.

  • Застосування NSA. Ви можете призначити NSApplicationDelegate для обробки деяких методів, які отримає екземпляр NSApplication (ваша програма). Ці методи можуть бути викликані безпосередньо перед або відразу після того, як ваша програма виконує інший метод, щоб можна було підготувати вашу програму.

  • NSWindow. NSWindowDelegate, призначений одному з вікон вашої програми, дасть вашій програмі можливість реагувати на зміну розміру, переміщення або інші події вікна користувача.

  • NSMenu. Ви реалізуєте NMenuDelegate для підтримки подій, які відбуваються, коли користувач взаємодіє з меню у вашій програмі.

Non-Objective-C Frameworks в програмах Macintosh

Apple надає багато фреймворків для розробки програм Macintosh (бібліотеки коду), які ваша програма може викликати для виконання тисяч операцій в OS X. Багато з цих фреймворків, наприклад PDF Kit, складаються з класів Objective-C, з яких ваша програма може створювати та використовувати об’єкти у своїх програмах. Однак деякі з цих фреймворків є лише бібліотеками функцій, які може виконувати ваш додаток.

Наприклад, фреймворк CFNetwork — це набір функцій, які ваша програма може використовувати для виконання тонких мережевих з’єднань. Клас NSURL надає хороший набір основних мережевих операцій, які чудово підходять для отримання даних за допомогою URL-адреси. Якщо вашій програмі потрібен більший контроль над мережевими зв’язками, які вона ініціює, вам доведеться використовувати фреймворк CFNetwork та його функції. Ви можете використовувати наступний код, щоб підготувати HTTP-запит для передачі на певну URL-адресу:

CFStringRef httpBody = CFSTR( ");
CFStringRef headerFieldName = CFSTR( "Cookie"); // додати певний файл cookie до HTTP-запиту
CFStringRef headerFieldValue = CFSTR( "loginID=my_user_name; password=my_password;");
CFStringRef url = CFSTR( "www.diabeticpad.com");
CFURLRef urlRef = CFURLCreateWithStrign( kCFAllocatorDefault, url, NULL);
CFStringRef requestMethod = CFSTR( "GET");
CFHTTPMessageRef request = CFHTTPMessageCreateRequest( kCFAllocatorDefault, requestMethod, url, kCFHTTPVersion1_1 );
CFHTTPMessageSetBody(запит, httpBody);
// додати печиво
CFHTTPMessageSetHeaderFieldValue(запит, headerFieldName, headerFieldValue);
CFDataRef serializedHttpRequest = CFHTTPMessageCopySerializedMessage(запит);

Після того, як ваш код отримає серійний запит, ваша програма може відкрити потік запису, щоб доставити запит до місця призначення.

Усі фреймворки Apple на основі C забезпечують набір функцій для виконання цього типу програмування нижнього рівня. Ваш код стане складнішим, але Apple не надає класи Objective-C для всіх своїх фреймворків. Якщо вам дійсно потрібна функціональність, доступна в одній із цих рамок, це єдиний спосіб досягти цілей вашої програми. Наступні фреймворки не надають класи Objective-C:

  • Панель аудіо інструментів

  • CFNetwork

  • Основний MIDI

  • Основний текст

  • Служба каталогів (наприклад, LDAP і Open Directory)

  • Безпека

Якщо ви хочете створювати програми, які можуть використовувати всі переваги OS X, ви повинні бути готові підтримувати використання бібліотек коду, які не є Objective-C.

Код C++ у програмах Objective-C Macintosh

Objective-C надає об'єктно-орієнтовані функції для розробки додатків Macintosh, такі як успадкування та поліморфізм. Мова заснована на мові програмування C; тому ви можете використовувати свої знання програмування на C для кодування в Objective-C. Objective-C++ – це механізм мосту, який дозволяє вихідним модулям Objective-C працювати з класами Objective-C++, які можуть компілювати та зв’язувати бібліотеки коду C++.

Наступний простий приклад квадратної матриці показує вміст заголовного файлу C++ для класу Matrix. Клас Matrix постачається зі стандартним конструктором і деструктором для класу C++, а методи – це те, що ви очікуєте для базового квадратного матричного об’єкта:

Матриця класу
{
публічний:
    Матриця ( int inSize );
    віртуальна ~Матриця();
    int getSize( void );
    int getDeterminant( void );
    void setElement( int inRow, int inCol, int inValue);
    int getElement( int inRow, int inCol );
    Матричний оператор+( const Matrix& inAddend );
приватний:
    int m_size;
    int[][] m_elements;
};

Щоб використовувати Objective-C++, ваші модулі класу Objective-C++ повинні використовувати розширення файлу .mm. Це повідомляє компілятору Xcode, що клас має бути зібраний за допомогою Objective-C++, що дозволить вашому класу використовувати ключові слова мови C++. Використовуючи Objective-C++, ваша програма може створити об’єкт Matrix для виконання основних операцій, таких як додавання двох об’єктів Matrix разом. Це передбачає, що вихідний модуль Objective-C++ #імпортував файл C++ Matrix.h:

- (void)addTwoMatrices
{
    Матриця matrixOne( 3 ); // Матриця 3x3
    Матриця matrixTwo( 3 ); // інший
    int rowIndex = 0;
    int colIndex = 0;
    for (rowIndex=0; rowIndex<3; ++rowIndex)
    {
        for (colIndex=0; colIndex<3; ++colIndex)
        {
            // встановлює значення своїх елементів матриці
            matrixOne.setElement( rowIndex, colIndex, XXX );
            // встановлюємо для елементів матриці два деякі інші значення
            matrixTwo.setElement( rowIndex, colIndex, YYY );
        }
    }
    Матрична матрицяSum = matrixOne + matrixTwo;

Завдяки Objective-C++ ваші програми можуть використовувати всі доступні сторонні бібліотеки, написані для C++.


Огляд Snagit 2018 Що нового з версії 13

Огляд Snagit 2018 Що нового з версії 13

TechSmith Snagit — наше улюблене програмне забезпечення для створення скріншотів і редагування зображень. Перегляньте нові функції в Snagit 2018!

8 онлайн-інструментів для малювання діаграм і блок-схем

8 онлайн-інструментів для малювання діаграм і блок-схем

Потрібно створити діаграми або блок-схеми і не хочете встановлювати додаткове програмне забезпечення? Ось список онлайн-інструментів для створення діаграм.

Spotify не може відтворити поточну пісню? Як виправити

Spotify не може відтворити поточну пісню? Як виправити

Мати дім, повний бездротових пристроїв і потокових служб, таких як Spotify, — це чудово, доки все не запрацює, а ви знайдете цікаві рішення.

Що таке NVMe M.2 SSD і наскільки він швидкий?

Що таке NVMe M.2 SSD і наскільки він швидкий?

NVMe M.2 SSD — це найновіша технологія комп’ютерних жорстких дисків. Що це таке та наскільки він швидкий порівняно зі старими жорсткими дисками та твердотільними накопичувачами (SSD)?

Sonos проти AirPlay: Чому я вибрав AirPlay для аудіосистеми всього будинку

Sonos проти AirPlay: Чому я вибрав AirPlay для аудіосистеми всього будинку

Sonos — це ідеальне рішення для потокового аудіо від 400 доларів США за два динаміки. Але за правильного налаштування AirPlay може бути безкоштовним. Давайте розглянемо деталі.

Додаток Google Backup and Sync замінює Photos і Drive

Додаток Google Backup and Sync замінює Photos і Drive

Google Backup and Sync – це нова програма, яка синхронізується з Фото та Диском. Читайте далі, щоб побачити, як він протистоїть OneDrive, Dropbox, Backblaze і Crashplan.

Розрізання кабелю: огляд MyIPTV із SOPlayer

Розрізання кабелю: огляд MyIPTV із SOPlayer

MyIPTV — це служба розрізання кабелю, яка використовує програму SOPlayer для кількох платформ і надає телебачення, фільми та інші форми медіа за плату.

Клавіатура Logitech K830 для вітальні з підсвічуванням

Клавіатура Logitech K830 для вітальні з підсвічуванням

Logitech нещодавно випустила клавіатуру K830 з підсвічуванням для вітальні, призначену для домашнього розваги. Ось наш огляд агрегату.

Оновлено CloudHQ: швидша синхронізація, редагування файлів Dropbox із Google Docs

Оновлено CloudHQ: швидша синхронізація, редагування файлів Dropbox із Google Docs

Ось подивіться на нещодавно випущене оновлення для CloudHQ і як воно працює. Читайте далі, щоб дізнатися більше.

Що таке Android-телефон OnePlus 6T?

Що таке Android-телефон OnePlus 6T?

OnePlus 6T — флагманський Android-телефон преміум-класу, який продається зі знижкою порівняно з Apple iPhone, Google Pixel 3 або Samsung Galaxy S9.