Macintosh utiliza de desenvolvimento de aplicações callbacks
para permitir que o Mac OS X para executar código no seu aplicativo para operações específicas. Se você está criando um padrão Macintosh Janela- ou aplicativo baseado em documentos, o primeiro código que OS X irá executar está em um dos seguintes métodos de retorno que você tem que criar para a sua aplicação, dependendo do projeto app:
aplicativos baseados em janelas: (Void) applicationDidFinishLaunching: (NSNotification *) aNotification
aplicativos baseados em documentos: (Void) windowControllerDidLoadNib: (NSWindowController *) windowController
Um retorno de chamada é simplesmente um método que o sistema operacional, eventualmente, executa enquanto ele está tentando fornecer ou recuperar informações de seu aplicativo. O código do aplicativo irá executar um método para uma classe de Cocoa, onde seu aplicativo terá a oportunidade de fornecer o nome de um método de uma das suas classes, a ser chamado em um objeto dessa classe a sua aplicação também terá que fornecer.
UMA delegar é um objeto auxiliar, que uma classe Cacau usa para estender a funcionalidade da classe, permitindo-lhe implementar o código que a classe Cacau irá executar em determinadas circunstâncias. Uma classe de Cocoa verifica o seu objeto de delegação (caso tenha sido atribuído) para saber se o delegado fornece uma implementação de um método específico. Se o delegado tem esse método, a classe Cocoa executa esse dologia se o delegado não implementar esse método específico, a classe de cacau ou usa um método padrão de seu próprio ou registra um erro. A maioria dos delegados deve incorporar um determinado protocolo que determina os métodos que podem imple- delegados do seu código deve usar os métodos do protocolo específico que o delegado espera implementar.
Aqui estão alguns dos objetos de cacau que podem usar delegados para executar seu código:
NSTableView. o NSTableView aceita um delegado que obedece a NSTableViewDelegate protocolo. Isso inclui 20 a 30 métodos que objeto de delegação do seu aplicativo pode implementar para apoiar a necessidade do seu aplicativo para saber o que o NSTableView está fazendo. Existem métodos que serão chamados no seu aplicativo quando ele precisa saber e reagir a um acções, tais como quando um usuário faz uma seleção na tabela ou quando uma coluna é redimensionada.
NSApplication. Você pode atribuir um NSApplicationDelegate para lidar com alguns dos métodos que um NSApplication instância (o aplicativo) receberá. Estes métodos podem ser chamados imediatamente antes ou imediatamente após a sua aplicação executa outro método, de modo que a sua aplicação pode ser preparado.
NSWindow. A NSWindowDelegate atribuído a uma das janelas do seu aplicativo vai dar a sua aplicação a chance de responder a um redimensionamento do usuário, mover ou outros eventos de janela.
NSMenu. Você implementar uma NSMenuDelegate para apoiar eventos que acontecem quando um usuário interage com menus em seu aplicativo.
Non-Objective-C Frameworks em aplicações Macintosh
Apple oferece muitas estruturas de Macintosh de desenvolvimento de aplicações (bibliotecas de código) que seu aplicativo pode chamar para executar os milhares de operações no OS X. Muitos destes quadros, como o Kit PDF, são compostos de classes de Objective-C, a partir do qual o seu aplicativo pode criar e usar objetos dentro de suas aplicações. No entanto, algumas destas estruturas são bibliotecas apenas de funções que a sua aplicação pode executar.
Por exemplo, a CFNetwork framework é um conjunto de funções que o seu aplicativo pode usar para realizar conexões de rede aperfeiçoá-lo. o NSURL classe fornece um bom conjunto de operações de rede básicos que são grandes para recuperar dados usando uma URL. Se seu aplicativo requer mais controle sobre as comunicações de rede que inicia, você vai ter que usar o CFNetwork framework e suas funções. Você pode usar o código a seguir para preparar uma solicitação HTTP para transmissão para uma URL específica:
CFStringRef httpBody = CFSTR ( "") -CFStringRef headerFieldName = CFSTR ( "Cookie") - // adicionar o cookie específico para HTTP requestCFStringRef headerFieldValue = CFSTR ( "loginID = my_user_name- password = my_password-") -CFStringRef url = CFSTR ( "diabeticpad .com ") -CFURLRef urlRef = CFURLCreateWithStrign (kCFAllocatorDefault, url, NULL) -CFStringRef RequestMethod = CFSTR (" GET ") -CFHTTPMessageRef pedido = CFHTTPMessageCreateRequest (kCFAllocatorDefault, RequestMethod, url, kCFHTTPVersion1_1) -CFHTTPMessageSetBody (request, httpBody) - // adicionar o cookieCFHTTPMessageSetHeaderFieldValue (request, headerFieldName, headerFieldValue) -CFDataRef serializedHttpRequest = CFHTTPMessageCopySerializedMessage (pedido) -
Uma vez que seu código tem o pedido serializado, o aplicativo pode então abrir um write-corrente, a fim de entregar o pedido ao seu destino.
Todos os quadros Apple baseados em C fornecer um conjunto de funções para realizar este tipo de programação de nível mais baixo. Seu código vai ficar mais complicado, mas a Apple não fornece as classes Objective-C para todos os seus quadros. Se você realmente precisar a funcionalidade disponível em um desses quadros, esta é a única maneira que você pode conseguir objetivos da sua aplicação. Os seguintes quadros não fornecem as classes Objective-C:
Se você quiser criar aplicações que podem tirar o máximo partido das funcionalidades do OS X, você precisa estar pronto para apoiar o uso de bibliotecas de código não-Objective-C.
Código C ++ em Objective-C Aplicações Macintosh
Objective-C fornece recursos orientados a objetos para desenvolvimento de aplicativos Macintosh, tais como herança e polimorfismo. A linguagem é baseada na language- de programação C, portanto, você pode usar seu conhecimento de programação C para o código dentro Objective-C. Objective-C ++ é um mecanismo de ponte que permitem módulos de fonte Objective-C para trabalhar com as classes Objective-C ++, o que poderia compilar e linkar com C ++ bibliotecas de código.
O seguinte exemplo simples de uma matriz quadrada mostra o conteúdo do arquivo de cabeçalho C ++ para um Matriz classe. A classe Matrix vem com o construtor padrão e destruidor para uma classe C ++, e os métodos são o que você esperaria de um objeto básico matriz quadrada:
classe Matrix {public: Matrix (int inSize) -Virtual ~ Matrix () - int getSize (void) -int getDeterminant (void) -void setElement (int InRow, int inCol, int inValue) -int GetElement (int InRow, int inCol ) operador -Matrix + (Matrix const inAddend) -Privada: int m_size-int [] [] m_elements -} -
Para usar Objective-C ++, o Objective-C ++ módulos de classe deve usar a extensão de arquivo .milímetros. Isso informa o compilador de Xcode que a classe deve ser compilado usando Objective-C ++, o que permitirá a sua classe a ser usado em C ++ idioma palavras-chave. Usando Objective-C ++, seu aplicativo pode criar um objeto Matrix para executar operações básicas, como a adição de dois Matrix objetos juntos. Isso pressupõe módulo de origem do Objective-C ++ tem #importared do C ++ Matrix.h Arquivo:
- (nulos) addTwoMatrices {Matrix MatrixOne (3) - // 3x3 matrixmatrix matrixTwo (3) - // anotherint rowIndex = 0-int colIndex = 0-for (rowIndex = 0- rowIndexlt; 3- ++ rowIndex) {for (colIndex = 0- colIndexlt; 3- ++ colIndex) {// set matriz de elementos da organização para sua valuesmatrixOne.setElement (rowIndex, colIndex, XXX) - // configura elementos de matriz duas de para algum outro valuesmatrixTwo.setElement (rowIndex, colIndex, YYY) -}} Matrix matrixSum = MatrixOne + matrixTwo-
Com Objective-C ++, as suas aplicações são capazes de tirar partido de todas as bibliotecas de terceiros disponíveis escritos para C ++.