SlideShare une entreprise Scribd logo
1  sur  28
Intro
AGENDA
• Il linguaggio
• Xcode
• Classi e Oggetti
• Creare oggetti
• Proprietà degli oggetti
• Gestione (base) della memoria
• Init e dealloc
IL LINGUAGGIO (1)
Objective-C è il principale linguaggio di programmazione
che si utilizza per creare applicazioni per OSX.

E' la base da apprendere per utilizzare le librerie
(framework) che Apple mette a disposizione e che
consentono lo sviluppo di applicazioni su:

• OSX
• iPhone
• iPodTouch
IL LINGUAGGIO (2)
E' un linguaggio di programmazione ad oggetti
(paradigma OOP) con caratteristiche che lo rendono
simile sia a linguaggi come Java e C++.


Lasceremo (quasi) da parte la teoria della OOP e ci
soffermeremo più sul lato "pratico". Lo scopo infatti è
quello di dare degli strumento immediati per lo sviluppo.
XCODE (1)
Per "tradurre" il nostro programma in un linguaggio
comprensibile al computer abbiamo bisogno di un
compilatore. Il suo utilizzo avviene principalmente
attraverso due modi:

1) Invocazione manuale della compilazione (es. tramite
terminale)

2) Utilizzo di un ambiente di sviluppo integrato (IDE): nel
nostro caso Xcode
XCODE (2)
Xcode è quindi l'IDE di riferimento per lo sviluppo su
OSX. Utilizzeremo questo strumento perché:

• E' di facile utilizzo
• Le principali azioni sono a portata di click
• Ci avverte di eventuali errori presenti nel codice
• Mette a disposizione un elenco di template adatti al
tipo di applicazioni che andremo a sviluppare
XCODE (3)
http://developer.apple.com/technology/Xcode.html
CLASSI E OGGETTI (1)
Cosa sono?

 "Think of an object as a fancy variable; it stores data, but
  you can "make requests" to that object, asking it to do
                    operation on itself."
               Bruce Eckel, Thinking in Java

Sono un'astrazione che ci permette di mappare oggetti
reali (o immaginari) in oggetti software. Così come nel
mondo reale, anche in OOP tutto è un oggetto... o quasi!
CLASSI E OGGETTI (2)
I nostri programmi quindi saranno un insieme di oggetti
che dialogano tra loro inviandosi messaggi e ricevendo
risposte.


        Ogni oggetto appartiene ad una classe...
CLASSI E OGGETTI (3)
Una breve, ma importante distinzione:


• Classe: è una descrizione astratta, un prototipo, che
definisce il comportamento di un oggetto.


• Oggetto: è un'entità, appartenente ad una classe, con
un proprio stato e comportamento.
CLASSI E OGGETTI (4)
Durante lo sviluppo di un programma quindi, saremo soliti
definire una classe ed istanziare uno o più oggetti relativi
ad essa.
classe
oggetti
CREARE OGGETTI (1)
In Objective-C per definire un oggetto, quindi la classe cui
esso appartiene, abbiamo bisogno di due file:

• uno (.h) che definisce l'interfaccia della classe
• l'altro (.m) che ne definisce l'implementazione

L'interfaccia descrive le azioni (i metodi) della classe e
nasconde l'implementazione che definisce come i metodi
vengono realmente eseguiti.
Gli oggetti comunicano tramite le loro interfacce!
CREARE OGGETTI (2)
   Definizione di un'interfaccia (MyClass.h)

                               @interface MyClass : NSObject {
dichiarazione di interfaccia                                     classe di appartenenza

         nome della classe         - int variabile;              variabili di classe

                               }                                 metodi (azioni) esposti

                               - (void)eseguiMetodo;

                               @end
CREARE OGGETTI (3)
L'implementazione (MyClass.m)

#import "MyClass.h"             interfaccia da implementare


@implementation MyClass
                                implementazione della classe
- (void)eseguiMetodo {
  // esegui qualcosa...
                                implementazione dei metodi
}

@end
CREARE OGGETTI (4)
Struttura di un metodo:
                           - (void) eseguiMetodo;


     tipologia di metodo             tipo di ritorno   nome del metodo




Un metodo può avere uno o più argomenti:

     - (int) sommaNumero:(int)arg1 conNumero:(int)arg2;


                    tipo argomento   nome argomento
PROPRIETA' (1)
Per permettere che le proprietà (variabili) di una classe
possano essere lette e/o modificate da chi la utilizza,
dobbiamo fornire dei metodi specifici (getter/setter).


Objective-C può generare automaticamente questi
metodi attraverso l'utilizzo delle keyword @properties e
@synthesize.
PROPRIETA' (2)
Nell'interfaccia dichiariamo per quali variabili vogliamo
creare i getter/setter

              @interface MyClass : NSObject {

                  - int variabile;

              }

              @properties (retain) int variabile;

              - (void)eseguiMetodo;

              @end
PROPRIETA' (3)
Nell'implementazione esplicitiamo la creazione
automatica dei metodi.
              #import "MyClass.h"

              @implementation MyClass

              @synthesize variabile;

              - (void)eseguiMetodo {
                // esegui qualcosa...
              }

              @end
GESTIONE MEMORIA (1)
La creazione di un oggetto implica l'occupazione di
memoria che successivamente dovrà essere liberata.


Possiamo riassumere il ciclo di vita di un oggetto nel
seguente modo:


     alloc          init          use          dealloc
GESTIONE MEMORIA (2)
• alloc: viene allocata (predisposta) la memoria necessaria
ad ospitare l'oggetto.

• init: viene inizializzato l'oggetto invocando il suo
costruttore, l'oggetto "prende vita".

• use: utilizzo dell'oggetto.
• dealloc: rimozione dalla memoria.
GESTIONE MEMORIA (3)
La gestione del ciclo di vita di un oggetto, si basa
sull'utilizzo di un "contatore" che tiene traccia di quanti
oggetti (esterni) hanno un riferimento ad esso.
Ogni volta che si crea un riferimento ad un oggetto il suo
contatore si incrementa, quando viene rimosso si
decrementa. Se il contatore raggiunge lo zero l'oggetto
viene rimosso dalla memoria.

Questo meccanismo è noto come retain/release
GESTIONE MEMORIA (4)
         retain = 0


                      +1   MyClass *foo = [[MyClass alloc] init];

         retain = 1        ...
time




                      -1   [foo release];

         retain = 0




          dealloc
GESTIONE MEMORIA (5)
       retain = 0

              +1                              MyClass *foo = [[MyClass alloc] init];

             retain = 1

                                              [foo retain];
time




                    +1


                    retain = 2

                            -1                [foo release];

                          retain = 1

                                  -1          [foo release];

                                 retain = 0
GESTIONE MEMORIA (6)
E' importante ricordare che ad ogni retain (necessità di
conservare un riferimento ad un oggetto) deve
corrispondere un release (rilascio dell'oggetto).

L'inizializzazione di un oggetto corrisponde ad un retain.

Se non si segue questa regola si può avere un problema
detto di "memory leak": spazio di memoria utilizzato ma
che non possiamo liberare.
INIT E DEALLOC (1)
La creazione di un oggetto avviene attraverso
l'invocazione di un particolare metodo chiamato
costruttore. Non è necessario implementare questo
metodo in quanto ogni oggetto ha un costruttore di
default definito implicitamente.

      MyClass *foo = [[MyClass alloc] init];



                                       costruttore di default
INIT E DEALLOC (2)
Possiamo, però, avere la necessità di eseguire determinate
azioni al momento della creazione di un oggetto. In
questo caso possiamo ridefinire il metodo init (override
di init) adattandolo alle nostre esigenze.
            @implementation MyClass

            - (id)init {
              if(self = [super init]) {
                variabile = 1;// valorizzo la var
              }
              return self;
            }
INIT E DEALLOC (3)
Analogamente al costruttore, possiamo ridefinire le azioni
al termine del ciclo di vita di un oggetto facendo
l'override del metodo dealloc.


           @implementation MyClass

           - (void)dealloc {
             NSLog(@"Override di dealloc...bye!");
             [super dealloc];
           }
alla prossima...

Contenu connexe

Tendances

Introduzione a JavaScript
Introduzione a JavaScriptIntroduzione a JavaScript
Introduzione a JavaScriptGiovanni Buffa
 
JavaScript Object Oriented
JavaScript Object OrientedJavaScript Object Oriented
JavaScript Object OrientedManuel Scapolan
 
C# e la Framework Class Library
C# e la Framework Class LibraryC# e la Framework Class Library
C# e la Framework Class LibraryManuel Scapolan
 
LINQ, Entities Framework & ORMs
LINQ, Entities Framework & ORMsLINQ, Entities Framework & ORMs
LINQ, Entities Framework & ORMsJUG Genova
 
Dai delegati a LINQ con C#
Dai delegati a LINQ con C#Dai delegati a LINQ con C#
Dai delegati a LINQ con C#Manuel Scapolan
 
Programmazione ad oggetti
Programmazione ad oggettiProgrammazione ad oggetti
Programmazione ad oggettimariacaporale
 
Programmazione ad oggetti
Programmazione ad oggettiProgrammazione ad oggetti
Programmazione ad oggettiLorena Rojas
 
Regole e princìpi e tecniche di programmazione
Regole e princìpi e tecniche di programmazioneRegole e princìpi e tecniche di programmazione
Regole e princìpi e tecniche di programmazioneAndrea Colleoni
 
Lezione 10 - Programmazione Ad Oggetti, Vb Accenni
Lezione 10 - Programmazione Ad Oggetti, Vb AccenniLezione 10 - Programmazione Ad Oggetti, Vb Accenni
Lezione 10 - Programmazione Ad Oggetti, Vb AccenniRice Cipriani
 
[Objective-C] - 02 Properties e Costruttori
[Objective-C] - 02 Properties e Costruttori[Objective-C] - 02 Properties e Costruttori
[Objective-C] - 02 Properties e CostruttoriJacopo Di Stanislao
 
Programmazione ad oggetti
Programmazione ad oggettiProgrammazione ad oggetti
Programmazione ad oggettiAnna_1969
 
Corso Python Deltapromo lezione 1
Corso Python Deltapromo   lezione 1Corso Python Deltapromo   lezione 1
Corso Python Deltapromo lezione 1Paolo Ferretti
 
Asp.net gestione della_memoria
Asp.net gestione della_memoriaAsp.net gestione della_memoria
Asp.net gestione della_memoriaCrismer La Pignola
 

Tendances (16)

Groovy & Grails
Groovy & GrailsGroovy & Grails
Groovy & Grails
 
Introduzione a JavaScript
Introduzione a JavaScriptIntroduzione a JavaScript
Introduzione a JavaScript
 
JavaScript Object Oriented
JavaScript Object OrientedJavaScript Object Oriented
JavaScript Object Oriented
 
C# e la Framework Class Library
C# e la Framework Class LibraryC# e la Framework Class Library
C# e la Framework Class Library
 
LINQ, Entities Framework & ORMs
LINQ, Entities Framework & ORMsLINQ, Entities Framework & ORMs
LINQ, Entities Framework & ORMs
 
Dai delegati a LINQ con C#
Dai delegati a LINQ con C#Dai delegati a LINQ con C#
Dai delegati a LINQ con C#
 
Programmazione ad oggetti
Programmazione ad oggettiProgrammazione ad oggetti
Programmazione ad oggetti
 
Programmazione ad oggetti
Programmazione ad oggettiProgrammazione ad oggetti
Programmazione ad oggetti
 
Regole e princìpi e tecniche di programmazione
Regole e princìpi e tecniche di programmazioneRegole e princìpi e tecniche di programmazione
Regole e princìpi e tecniche di programmazione
 
Lezione 10 - Programmazione Ad Oggetti, Vb Accenni
Lezione 10 - Programmazione Ad Oggetti, Vb AccenniLezione 10 - Programmazione Ad Oggetti, Vb Accenni
Lezione 10 - Programmazione Ad Oggetti, Vb Accenni
 
[Objective-C] - 02 Properties e Costruttori
[Objective-C] - 02 Properties e Costruttori[Objective-C] - 02 Properties e Costruttori
[Objective-C] - 02 Properties e Costruttori
 
Programmazione ad oggetti
Programmazione ad oggettiProgrammazione ad oggetti
Programmazione ad oggetti
 
OOP with C#
OOP with C#OOP with C#
OOP with C#
 
Corso Python Deltapromo lezione 1
Corso Python Deltapromo   lezione 1Corso Python Deltapromo   lezione 1
Corso Python Deltapromo lezione 1
 
Asp.net gestione della_memoria
Asp.net gestione della_memoriaAsp.net gestione della_memoria
Asp.net gestione della_memoria
 
Java OCA teoria 1
Java OCA teoria 1Java OCA teoria 1
Java OCA teoria 1
 

Similaire à [Objective-C] - Introduzione

Xcode - Just do it
Xcode - Just do itXcode - Just do it
Xcode - Just do itpragmamark
 
Corso Iphone in 48h
Corso Iphone in 48hCorso Iphone in 48h
Corso Iphone in 48hFLT.lab
 
Terracotta JUG Milano
Terracotta JUG MilanoTerracotta JUG Milano
Terracotta JUG MilanoGuido Anselmi
 
MS_corso base iOS iPhone_partI
MS_corso base iOS iPhone_partIMS_corso base iOS iPhone_partI
MS_corso base iOS iPhone_partIMobileSchool
 
Two months of Kotlin
Two months of KotlinTwo months of Kotlin
Two months of KotlinErik Minarini
 
Javascript - 4 | WebMaster & WebDesigner
Javascript - 4 | WebMaster & WebDesignerJavascript - 4 | WebMaster & WebDesigner
Javascript - 4 | WebMaster & WebDesignerMatteo Magni
 
Javascript avanzato: sfruttare al massimo il web
Javascript avanzato: sfruttare al massimo il webJavascript avanzato: sfruttare al massimo il web
Javascript avanzato: sfruttare al massimo il webRoberto Messora
 
Introduzione alla programmazione Android - Android@tulug
Introduzione alla programmazione Android - Android@tulugIntroduzione alla programmazione Android - Android@tulug
Introduzione alla programmazione Android - Android@tulugIvan Gualandri
 
Sviluppare app native per iOS
Sviluppare app native per iOSSviluppare app native per iOS
Sviluppare app native per iOSGaspare Novara
 
Sviluppare apps native per iOS - Lo Stretto Digitale
Sviluppare apps native per iOS - Lo Stretto DigitaleSviluppare apps native per iOS - Lo Stretto Digitale
Sviluppare apps native per iOS - Lo Stretto Digitalelostrettodigitale
 
Eclipse emf
Eclipse emfEclipse emf
Eclipse emfAdvenias
 
ZoeFX: un framework MVC per JavaFX
ZoeFX: un framework MVC per JavaFXZoeFX: un framework MVC per JavaFX
ZoeFX: un framework MVC per JavaFXTiziano Lattisi
 
Introduzione a Node.js
Introduzione a Node.jsIntroduzione a Node.js
Introduzione a Node.jsMichele Capra
 

Similaire à [Objective-C] - Introduzione (20)

Xcode - Just do it
Xcode - Just do itXcode - Just do it
Xcode - Just do it
 
Spring @Aspect e @Controller
Spring @Aspect e @Controller Spring @Aspect e @Controller
Spring @Aspect e @Controller
 
introduzione a symfony 2
introduzione a symfony 2 introduzione a symfony 2
introduzione a symfony 2
 
2006 Py03 intermedio
2006 Py03 intermedio2006 Py03 intermedio
2006 Py03 intermedio
 
Corso Iphone in 48h
Corso Iphone in 48hCorso Iphone in 48h
Corso Iphone in 48h
 
Terracotta JUG Milano
Terracotta JUG MilanoTerracotta JUG Milano
Terracotta JUG Milano
 
MS_corso base iOS iPhone_partI
MS_corso base iOS iPhone_partIMS_corso base iOS iPhone_partI
MS_corso base iOS iPhone_partI
 
Two months of Kotlin
Two months of KotlinTwo months of Kotlin
Two months of Kotlin
 
Javascript - 4 | WebMaster & WebDesigner
Javascript - 4 | WebMaster & WebDesignerJavascript - 4 | WebMaster & WebDesigner
Javascript - 4 | WebMaster & WebDesigner
 
Lezione01
Lezione01Lezione01
Lezione01
 
Lezione01
Lezione01Lezione01
Lezione01
 
Javascript avanzato: sfruttare al massimo il web
Javascript avanzato: sfruttare al massimo il webJavascript avanzato: sfruttare al massimo il web
Javascript avanzato: sfruttare al massimo il web
 
Introduzione alla programmazione Android - Android@tulug
Introduzione alla programmazione Android - Android@tulugIntroduzione alla programmazione Android - Android@tulug
Introduzione alla programmazione Android - Android@tulug
 
Sviluppare app native per iOS
Sviluppare app native per iOSSviluppare app native per iOS
Sviluppare app native per iOS
 
Sviluppare apps native per iOS - Lo Stretto Digitale
Sviluppare apps native per iOS - Lo Stretto DigitaleSviluppare apps native per iOS - Lo Stretto Digitale
Sviluppare apps native per iOS - Lo Stretto Digitale
 
L'avventura dell'interprete UI - Un'indagine Java di Lotus Holmes
L'avventura dell'interprete UI - Un'indagine Java di Lotus HolmesL'avventura dell'interprete UI - Un'indagine Java di Lotus Holmes
L'avventura dell'interprete UI - Un'indagine Java di Lotus Holmes
 
Eclipse emf
Eclipse emfEclipse emf
Eclipse emf
 
ZoeFX: un framework MVC per JavaFX
ZoeFX: un framework MVC per JavaFXZoeFX: un framework MVC per JavaFX
ZoeFX: un framework MVC per JavaFX
 
Introduzione a Node.js
Introduzione a Node.jsIntroduzione a Node.js
Introduzione a Node.js
 
Introduzione a node.js
Introduzione a node.jsIntroduzione a node.js
Introduzione a node.js
 

[Objective-C] - Introduzione

  • 2. AGENDA • Il linguaggio • Xcode • Classi e Oggetti • Creare oggetti • Proprietà degli oggetti • Gestione (base) della memoria • Init e dealloc
  • 3. IL LINGUAGGIO (1) Objective-C è il principale linguaggio di programmazione che si utilizza per creare applicazioni per OSX. E' la base da apprendere per utilizzare le librerie (framework) che Apple mette a disposizione e che consentono lo sviluppo di applicazioni su: • OSX • iPhone • iPodTouch
  • 4. IL LINGUAGGIO (2) E' un linguaggio di programmazione ad oggetti (paradigma OOP) con caratteristiche che lo rendono simile sia a linguaggi come Java e C++. Lasceremo (quasi) da parte la teoria della OOP e ci soffermeremo più sul lato "pratico". Lo scopo infatti è quello di dare degli strumento immediati per lo sviluppo.
  • 5. XCODE (1) Per "tradurre" il nostro programma in un linguaggio comprensibile al computer abbiamo bisogno di un compilatore. Il suo utilizzo avviene principalmente attraverso due modi: 1) Invocazione manuale della compilazione (es. tramite terminale) 2) Utilizzo di un ambiente di sviluppo integrato (IDE): nel nostro caso Xcode
  • 6. XCODE (2) Xcode è quindi l'IDE di riferimento per lo sviluppo su OSX. Utilizzeremo questo strumento perché: • E' di facile utilizzo • Le principali azioni sono a portata di click • Ci avverte di eventuali errori presenti nel codice • Mette a disposizione un elenco di template adatti al tipo di applicazioni che andremo a sviluppare
  • 8. CLASSI E OGGETTI (1) Cosa sono? "Think of an object as a fancy variable; it stores data, but you can "make requests" to that object, asking it to do operation on itself." Bruce Eckel, Thinking in Java Sono un'astrazione che ci permette di mappare oggetti reali (o immaginari) in oggetti software. Così come nel mondo reale, anche in OOP tutto è un oggetto... o quasi!
  • 9. CLASSI E OGGETTI (2) I nostri programmi quindi saranno un insieme di oggetti che dialogano tra loro inviandosi messaggi e ricevendo risposte. Ogni oggetto appartiene ad una classe...
  • 10. CLASSI E OGGETTI (3) Una breve, ma importante distinzione: • Classe: è una descrizione astratta, un prototipo, che definisce il comportamento di un oggetto. • Oggetto: è un'entità, appartenente ad una classe, con un proprio stato e comportamento.
  • 11. CLASSI E OGGETTI (4) Durante lo sviluppo di un programma quindi, saremo soliti definire una classe ed istanziare uno o più oggetti relativi ad essa. classe oggetti
  • 12. CREARE OGGETTI (1) In Objective-C per definire un oggetto, quindi la classe cui esso appartiene, abbiamo bisogno di due file: • uno (.h) che definisce l'interfaccia della classe • l'altro (.m) che ne definisce l'implementazione L'interfaccia descrive le azioni (i metodi) della classe e nasconde l'implementazione che definisce come i metodi vengono realmente eseguiti. Gli oggetti comunicano tramite le loro interfacce!
  • 13. CREARE OGGETTI (2) Definizione di un'interfaccia (MyClass.h) @interface MyClass : NSObject { dichiarazione di interfaccia classe di appartenenza nome della classe - int variabile; variabili di classe } metodi (azioni) esposti - (void)eseguiMetodo; @end
  • 14. CREARE OGGETTI (3) L'implementazione (MyClass.m) #import "MyClass.h" interfaccia da implementare @implementation MyClass implementazione della classe - (void)eseguiMetodo { // esegui qualcosa... implementazione dei metodi } @end
  • 15. CREARE OGGETTI (4) Struttura di un metodo: - (void) eseguiMetodo; tipologia di metodo tipo di ritorno nome del metodo Un metodo può avere uno o più argomenti: - (int) sommaNumero:(int)arg1 conNumero:(int)arg2; tipo argomento nome argomento
  • 16. PROPRIETA' (1) Per permettere che le proprietà (variabili) di una classe possano essere lette e/o modificate da chi la utilizza, dobbiamo fornire dei metodi specifici (getter/setter). Objective-C può generare automaticamente questi metodi attraverso l'utilizzo delle keyword @properties e @synthesize.
  • 17. PROPRIETA' (2) Nell'interfaccia dichiariamo per quali variabili vogliamo creare i getter/setter @interface MyClass : NSObject { - int variabile; } @properties (retain) int variabile; - (void)eseguiMetodo; @end
  • 18. PROPRIETA' (3) Nell'implementazione esplicitiamo la creazione automatica dei metodi. #import "MyClass.h" @implementation MyClass @synthesize variabile; - (void)eseguiMetodo { // esegui qualcosa... } @end
  • 19. GESTIONE MEMORIA (1) La creazione di un oggetto implica l'occupazione di memoria che successivamente dovrà essere liberata. Possiamo riassumere il ciclo di vita di un oggetto nel seguente modo: alloc init use dealloc
  • 20. GESTIONE MEMORIA (2) • alloc: viene allocata (predisposta) la memoria necessaria ad ospitare l'oggetto. • init: viene inizializzato l'oggetto invocando il suo costruttore, l'oggetto "prende vita". • use: utilizzo dell'oggetto. • dealloc: rimozione dalla memoria.
  • 21. GESTIONE MEMORIA (3) La gestione del ciclo di vita di un oggetto, si basa sull'utilizzo di un "contatore" che tiene traccia di quanti oggetti (esterni) hanno un riferimento ad esso. Ogni volta che si crea un riferimento ad un oggetto il suo contatore si incrementa, quando viene rimosso si decrementa. Se il contatore raggiunge lo zero l'oggetto viene rimosso dalla memoria. Questo meccanismo è noto come retain/release
  • 22. GESTIONE MEMORIA (4) retain = 0 +1 MyClass *foo = [[MyClass alloc] init]; retain = 1 ... time -1 [foo release]; retain = 0 dealloc
  • 23. GESTIONE MEMORIA (5) retain = 0 +1 MyClass *foo = [[MyClass alloc] init]; retain = 1 [foo retain]; time +1 retain = 2 -1 [foo release]; retain = 1 -1 [foo release]; retain = 0
  • 24. GESTIONE MEMORIA (6) E' importante ricordare che ad ogni retain (necessità di conservare un riferimento ad un oggetto) deve corrispondere un release (rilascio dell'oggetto). L'inizializzazione di un oggetto corrisponde ad un retain. Se non si segue questa regola si può avere un problema detto di "memory leak": spazio di memoria utilizzato ma che non possiamo liberare.
  • 25. INIT E DEALLOC (1) La creazione di un oggetto avviene attraverso l'invocazione di un particolare metodo chiamato costruttore. Non è necessario implementare questo metodo in quanto ogni oggetto ha un costruttore di default definito implicitamente. MyClass *foo = [[MyClass alloc] init]; costruttore di default
  • 26. INIT E DEALLOC (2) Possiamo, però, avere la necessità di eseguire determinate azioni al momento della creazione di un oggetto. In questo caso possiamo ridefinire il metodo init (override di init) adattandolo alle nostre esigenze. @implementation MyClass - (id)init { if(self = [super init]) { variabile = 1;// valorizzo la var } return self; }
  • 27. INIT E DEALLOC (3) Analogamente al costruttore, possiamo ridefinire le azioni al termine del ciclo di vita di un oggetto facendo l'override del metodo dealloc. @implementation MyClass - (void)dealloc { NSLog(@"Override di dealloc...bye!"); [super dealloc]; }