Vous êtes sur la page 1sur 7

Introspeco O nome parece ser at meio psicodlico e fora do nosso contexto informatizado.

A introspection ou melhor dizendo instrospeco a capacidade de obtermos informaes ou cadeias de objetos relacionados dentro de um grupo. Iremos ver como isso funciona no iOS. Normalmente esse tipo de ao utilizada para ler, manipular ou at mesmo desalocar o objeto nestes eventos da programao. Vou relacionar abaixo uma lista de mtodos documentos pela Apple Developer Program:

-(BOOL)isKindOfClass:classType Is the object a member of that class or a subclass? -(BOOL)isMemberOfClass:classType Is the object a member of that class? -(BOOL)respondsToSelector:aSelector Does an object (class or instance) respond to the selectors method? +(BOOL)instancesRespondToSelector:aSelector Do instances of the class respond to the selectors method? +(BOOL)isSubclassOfClass:classType Is this class a subclass of the specified class? -(id)performSelector:aSelector Ask the class to perform the method specified by the selector, returning whatever the method is intended to return. -(id)performSelector:aSelector withObject:someObject Performs the selector, passing in someObject as the first (and hopefully only) argument, returning whatever the method is designed to return. -(id)performSelector:aSelector withObject:someObject withObject:anotherObject Perform the selector, passing in the two arguments in that order to the (assumed) two parameters defined by the selector, returning whatever the method is designed to return.

Figura. 01 iOs Developer Library Cocoa Core Competencies Irei exemplificar algumas formas de visualizar todo esse processo maluco de introspeco. Vou demonstrar utilizando Label e Button em nosso projeto de exemplo que vamos criar.

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

Nome do Produto e company identifier fica a seu critrio, selecionei a famlia de dispositivo iPhone e, estou utilizando Storyboard e ARC. Para aqueles que ainda

no se familiarizaram com o Storyboard, num prximo artigo irei dedicar um artigo somente para isso. Depois de criado o projeto, vamos ao que interessa. Iremos adicionar em nossa interface, uma View adicionada a mais, quatro botes e cinco labels para que possamos entender legal a idia, 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 codificao e ligao dos botes criados.

Em nosso arquivo ViewController.h temos os seguintes dados:


#import <UIKit/UIKit.h> @interface ViewController : UIViewController - (IBAction)btn01:(UIButton *)sender; - (IBAction)btn02:(UIButton *)sender; - (IBAction)btn03:(UIButton *)sender; - (IBAction)btn04:(UIButton *)sender; @end

So declarados todos os botes que estamos utilizando, para utilizao na ligaes, conforme imagem anterior de interface. No arquivo ViewController.m teremos os seguintes mtodos 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 mtodos no arquivo .H, basta efetuar as ligaes e iniciar os testes.

Iniciando o processo de testes, veremos que cada boto ir efetuar aes diferentes para os objetos relacionados em tela. Esse processo somente possvel, devido ao fato de utilizarmos a introspeco. O processo que utilizamos torna possvel a manipulao dos objetos ali integrados. Em nossos dia-a-dia de desenvolvimento, isso torna melhor nossa forma de manipular objetos que esto sendo utilizando em tempo de execuo. Core Foundation permite uma variedade de introspeco tipo, principalmente para fins de depurao e manipulao. Veja com mais detalhes nas documentaes em Apple Developer Program, no qual so discutidos de forma ampla sobre o assunto. Espero ter contribuido um pouco mais com nosso artigo, agradeo pelo espao e o seu tempo utilizado para ler nosso artigo. Como disse anteriormente, iremos abordar um pouco mais sobre StoryBoard. Te vejo no prximo artigo, obrigado! Referncia: Cocoa Fundamentals Guide. 2010 Apple Inc. Pginas 131-136. Learning the iOS 4 SDK for Javascript Programmers. Cpitulo 8, Objective-C Touch Fundamentals. Pgina 198. http://developer.apple.com http://developer.apple.com/library/ios/navigation/ http://developer.apple.com/library/ios/#DOCUMENTATION/General/Conceptu al/DevPedia-CocoaCore/Introspection.html

Vous aimerez peut-être aussi