o aceite o valor padrão do resto dos campos
Por último, conecte o label que tem o texto Dados salvos com sucesso cri-
ando uma Connection do tipo Outlet, e o Name avisoSucessoLabel
Neste ponto o arquivo ViewController.h deverá estar como o código abaixo:
# import <UIKit / UIKit.h>
@interface ViewController : UIViewController
@property (weak, nonatomic) IBOutlet UITextField *nomeField;
@property (weak, nonatomic) IBOutlet UITextField *quantidadeField;
@property (weak, nonatomic) IBOutlet UILabel *avisoSucessoLabel;
- (IBAction)incrementadorAlterado:(id)sender;
- (IBAction)salvar:(id)sender;
@end
Se você abrir o arquivo ViewController.m verá que o Xcode já criou para a
gente o corpo dos métodos incrementadorAlterado: e salvar:.
34
Casa do Código
Capítulo 3. Mais Objective-C e Xcode
O que exatamente é IBOutlet e IBAction?
Os modificadores IBOutlet e IBAction são usados unicamente
como marcadores para integrar componentes do Interface Builder com
o código-fonte em arquivos .h. O primeiro é usado quando queremos
referenciar o componente no código através de uma variável, e o segundo
é usado exclusivamente para ações dos componentes, como o toque em
um botão. Por trás dos panos, o que o Xcode faz é analisar o código e
automaticamente realizar as devidas conexões entre a interface gráfica e
o nosso código.
3.7
Uma classe para representar uma empresa
Agora que já temos a tela criada, é hora de colocar a mão no código, e o primeiro
passo é criar a classe Empresa para armazenar as informações preenchidas pelo
usuário. Para isso, abra a janela de adição de arquivos ( Command + N, ou então
File -> New -> File...), e selecione o template Objective-C class. Clique no botão Next, insira o valor Empresa no campo Class, e em Subclass of selecione o item NSObject.
Clique em Next:: para salvar o arquivo.
Importante
Ao incluir arquivos em qualquer projeto que for trabalhar, certifique-
se de que a opção Targets esteja selecionada na caixa de diálogo de salvar
arquivo conforme mostra a figura 3.9. Isso é necessário para associar o
arquivo com o projeto do contrário, o Xcode ignorá-lo-ia na hora de
compilar e empacotar o projeto para distribuição.
35
3.7. Uma classe para representar uma empresa
Casa do Código
Figura 3.9: Target corretamente selecionado
Alternando novamente entre os painéis
Trabalhar no Xcode é um processo constante entre esconder, mostrar
e mudar o tipo dos painéis de acordo com a tarefa a ser feita, de modo
que nossa produtividade aumente. No caso desta seção, onde já criamos
a tela e vamos focar mais em código, não é necessário manter o arquivo
Main.storyboard aberto e nem o painel Utilities. Alterne para o Stan-
dard Editor utilizando a tecla de atalho Command + ENTER, e esconda
o outro painel com o atalho Option + Command + 0, e selecione o
arquivo ViewController.m no Navigator ( Command + 1)
A nossa empresa tem duas propriedades: nome (uma string) e quantidade de
funcionários (número inteiro). Abra
o arquivo Empresa.h e modifique-o para ficar
como o código abaixo:
1 # import <Foundation / Foundation.h>
2
36
Casa do Código
Capítulo 3. Mais Objective-C e Xcode
3 @interface Empresa : NSObject
4
5 @property (nonatomic, retain) NSString *nome;
6 @property (nonatomic, assign) int quantidadeFuncionarios;
7
8 @end
Não é necessário fazer qualquer modificação no arquivo Empresa.m.
3.8
Cabeçalhos e implementações
Em Objective-C, a declaração e implementação da classe ficam em arquivos diferen-
tes. A declaração, ou usando o termo correto interface, fica em um arquivo
com a extensão .h, de header (cabeçalho), enquanto que a implementação fica em
um arquivo com a extensão .m. Diferentemente de outras linguagens, nas quais se
usa apenas um arquivo para tudo o que diz respeito à classe, em Objective-C você
sempre precisará da dupla .h e .m.
No arquivo de cabeçalho (como o Empresa.h) fica a declaração da classe, das
variáveis de instância, das propriedades, dos métodos de instância e dos métodos de
classe.
Nota sobre @interface
A declaração @interface é semanticamente muito diferente da
mesma palavra-chave no Java e C#, em que representa um determi-
nado contrato que a classe deve seguir. Em Objective-C, @interface
serve unicamente para declarar a classe, e o equivalente da palavra chave
interface do Java e do C# é @protocol, que veremos em um outro
capítulo.
Enquanto o cabeçalho define apenas a estrutura geral da classe, e não o có-
digo propriamente dito, o arquivo .m contém o código de verdade, como arquivo
ViewController.m ou Empresa.m.
37
3.9. Informando a quantidade de funcionários
Casa do Código
Curiosidade sobre a extensão .M
A extensão .m do Objective-C originou-se a partir de mensagens
(do termo em inglês messages), a qual se refere a um dos principais con-
ceitos da linguagem.
3.9
Informando a quantidade de funcionários
Estamos na metade do caminho, mas o resto é só código! Agora que temos a tela e a
classe Empresa vamos colocar as ações nos métodos de incrementar a quantidade