• Ed. Salvador Trade Center
  • (71) 4042-1341​⁠​
  • (71) 98798-2767​⁠​

Entendendo o processo de introspecção no iOS

iOS

A “introspection”, ou melhor dizendo, instrospecção é a capacidade de obtermos informações ou cadeias de objetos relacionados dentro de um grupo. Iremos ver como isso funciona no iOS. Normalmente, esse tipo de ação é utilizada para ler, manipular ou até mesmo desalocar o objeto nestes eventos da programação.

Vou relacionar abaixo uma lista de métodos documentados pela Apple Developer Program:


Figura. 01 – iOs Developer Library – Cocoa Core Competencies

Irei exemplificar algumas formas de visualizar todo esse processo de introspecção. Vou demonstrar utilizando o “Label” e o “Button” no projeto de exemplo que vamos criar.

Iremos criar um simples App para entendermos o funcionamento deste processo.

O nome do produto e o company identifier fica a seu critério. Eu selecionei a família de dispositivo iPhone e estou utilizando Storyboard e ARC. Para aqueles que ainda não se familiarizaram com o Storyboard, num próximo artigo irei falar somente dele. Depois de criado o projeto, vamos ao que interessa!

Iremos adicionar em nossa interface uma View a mais, quatro botões e cinco label’s para que possamos entender a idéia. Abaixo segue um “screenshot” de como irá ficar nossa tela no App.

Depois de montado todo o visual de nosso App, iremos partir para a codificação e ligação dos botões criados.

Em nosso arquivo “ViewController.h” temos os seguintes dados:

#import 

@interface ViewController : UIViewController

- (IBAction)btn01:(UIButton *)sender;
- (IBAction)btn02:(UIButton *)sender;
- (IBAction)btn03:(UIButton *)sender;
- (IBAction)btn04:(UIButton *)sender;

@end

São declarados todos os botões que estamos utilizando nas ligações, conforme imagem anterior de interface.

No arquivo “ViewController.m” teremos os seguintes métodos implementados:

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (IBAction)btn01:(UIButton *)sender
{
for (UIView *aView in self.view.subviews) {
if ([aView isMemberOfClass:[UILabel class]]) {
aView.backgroundColor = [UIColor redColor];
}
}
}

- (IBAction)btn02:(UIButton *)sender
{
for (UIView *aView in self.view.subviews) {
if ([aView isKindOfClass:[UIView class]]) {
aView.backgroundColor = [UIColor blueColor];
}
}
}

- (IBAction)btn03:(UIButton *)sender
{
for (id aView in self.view.subviews) {
if ([aView canPerformAction:@selector(setText:) withSender:sender]) {
[aView setText:@"Introspection iOS"];
[aView setBackgroundColor:[UIColor blueColor]];
[aView setTextColor:[UIColor whiteColor]];
}
}
}

- (IBAction)btn04:(UIButton *)sender
{
for (UIView *aView in self.view.subviews) {
if ([aView isMemberOfClass:[UIView class]]) {
for (UILabel *aLabel in aView.subviews) {
aLabel.backgroundColor = [UIColor greenColor];
}
}
}
}

Depois de declarado os métodos no arquivo .H, basta efetuar as ligações e iniciar os testes.

Iniciando o processo de testes, veremos que cada botão irá efetuar ações diferentes para os objetos relacionados em tela. Esse processo somente é possível devido ao fato de utilizarmos a introspecção. O processo que utilizamos torna possível a manipulação dos objetos integrados. Em nossos dia-a-dia de desenvolvimento, isso torna melhor nossa forma de manipular objetos que são utilizados em tempo de execução.

O Core Foundation permite uma variedade de introspecção, principalmente para fins de depuração e manipulação. Veja com mais detalhes nas documentações em “Apple Developer Program”, no qual são discutidos de forma ampla sobre o assunto.

Espero ter contribuído um pouco mais com nosso artigo. Como disse anteriormente, iremos abordar um pouco mais sobre “StoryBoard”. Te vejo no próximo artigo, obrigado!

Fonte: iMasters