Разработка на приложения за Mac за LuckyTemplates Cheat Sheet

Разработването на приложения за 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, които могат да използват делегати за изпълнение на вашия код:

  • NSTableView. NSTableView приема делегат, който се подчинява на протокола NSTableViewDelegate. Това включва 20 до 30 метода, които обектът на делегата на вашето приложение може да приложи, за да поддържа необходимостта на приложението ви да знае какво прави NSTableView. Има методи, които ще бъдат извикани във вашето приложение, когато то трябва да знае и да реагира на действие, като например когато потребител направи избор в таблицата или когато колона бъде преоразмерена.

  • NSA приложение. Можете да зададете NSApplicationDelegate да обработва някои от методите, които екземпляр на NSApplication (вашето приложение) ще получи. Тези методи могат да бъдат извикани точно преди или веднага след като приложението ви изпълни друг метод, така че приложението ви да може да бъде подготвено.

  • NSWindow. NSWindowDelegate, присвоен на един от прозорците на вашето приложение, ще даде на приложението ви шанс да отговори на потребителско преоразмеряване, преместване или други събития на прозореца.

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

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"); // добавяне на конкретна бисквитка към 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(заявка);

След като кодът ви има сериализирана заявка, приложението ви може да отвори поток за запис, за да достави заявката до местоназначението му.

Всички базирани на C рамки на Apple предоставят набор от функции за извършване на този тип програмиране от по-ниско ниво. Вашият код ще стане по-сложен, но 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 );
    виртуален ~Matrix();
    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:

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

С Objective-C++ вашите приложения могат да се възползват от всички налични библиотеки на трети страни, написани за C++.


За възрастни: Как да вмъкнете изрезки в слайд на PowerPoint

За възрастни: Как да вмъкнете изрезки в слайд на PowerPoint

Клипартът е предварително нарисувано общо произведение на изкуството и Microsoft предоставя много файлове с клипарт безплатно със своите продукти на Office. Можете да вмъкнете изрезки в оформлението на слайда на PowerPoint. Най-лесният начин да вмъкнете клип арт е като използвате един от заместителите в оформлението на слайда: Покажете слайд, който съдържа клипарт […]

За възрастни: Как да запълните цвят в Microsoft Excel

За възрастни: Как да запълните цвят в Microsoft Excel

Цвят на запълване — наричан още засенчване — е цветът или моделът, който запълва фона на една или повече клетки на работния лист на Excel. Прилагането на засенчване може да помогне на очите на читателя да следват информацията в цялата страница и може да добави цвят и визуален интерес към работния лист. В някои видове електронни таблици, като например регистър на чековите книжки, […]

Добавяне на нови контакти в Act! 2005 г

Добавяне на нови контакти в Act! 2005 г

На най-простото ниво, основната цел на ACT! е да служи като място за съхранение на всички контакти, с които взаимодействате ежедневно. Можете да добавяте и редактирате всичките си контакти от прозореца Подробности за контакт, защото съдържа цялата информация, която се отнася до един конкретен запис и […]

Discord For LuckyTemplates Cheat Sheet

Discord For LuckyTemplates Cheat Sheet

Използвайте този Cheat Sheet, за да преминете директно към използването на Discord. Открийте полезни Discord ботове, приложения, които можете да интегрирате, и съвети за интервюиране на гости.

OpenOffice.org за LuckyTemplates Cheat Sheet

OpenOffice.org за LuckyTemplates Cheat Sheet

Офис пакетът OpenOffice.org има много инструменти за улесняване на работния живот. Когато работите в OpenOffice.org, запознайте се с функционалната лента с инструменти (която изглежда почти еднакво във всички приложения) и главните бутони на лентата с инструменти за помощ с основните команди за повечето задачи.

Машината за бомби на Алън Тюринг

Машината за бомби на Алън Тюринг

Машината Bombe на Алън Тюринг не беше никаква форма на изкуствен интелект (AI). Всъщност това дори не е истински компютър. Счупи криптографските съобщения на Enigma и това е всичко. Това обаче даде повод за размисъл за Тюринг, което в крайна сметка доведе до документ, озаглавен „Компютърни машини и интелигентност“?? която той публикува през 50-те години на миналия век, която описва […]

Стандартни хардуерни дефицити за изкуствен интелект

Стандартни хардуерни дефицити за изкуствен интелект

Възможността за създаване на модулна система има значителни предимства, особено в бизнеса. Възможността за премахване и замяна на отделни компоненти поддържа разходите ниски, като същевременно позволява постепенни подобрения както в скоростта, така и в ефективността. Въпреки това, както при повечето неща, няма безплатен обяд. Модулността, осигурена от архитектурата на фон Нойман, идва с някои […]

10 правила, които не трябва да правите при използване на QuarkXPress

10 правила, които не трябва да правите при използване на QuarkXPress

Ако трябва да изберете десет лесни за забравяне, но изключително полезни неща, които да запомните за QuarkXPress, тези в следващия списък, скъпи читателю, биха били те. Намасте. Говорете с вашия търговски принтер. Всички проекти за печат започват и завършват с принтера. Това е така, защото само принтерите знаят своите ограничения и хилядите начини, по които един проект може да бъде […]

Произходът на биткойн

Произходът на биткойн

Най-важният аспект на биткойн може да е концепцията зад него. Биткойн е създаден от разработчика Сатоши Накамото. Вместо да се опитва да създаде изцяло нов метод на плащане, за да премахне начина, по който всички плащаме за нещата онлайн, Сатоши видя някои проблеми със съществуващите платежни системи и искаше да ги разреши. Концепцията за […]

Как да защитите поверителността си, когато използвате биткойн

Как да защитите поверителността си, когато използвате биткойн

Известно ниво на анонимност е обвързано с използването на биткойн и цифровата валута като цяло. Дали можете да го обозначите като „достатъчно анонимен“ е лично мнение. Има начини да защитите поверителността си, когато използвате биткойн за преместване на средства, но те изискват известно усилие и планиране: Можете да генерирате нов адрес за […]