In Objective-C abbiamo due modi molto utilizzati per ricevere ed inviare messaggi tra classi: le notifiche e i delegati. La differenza tra i due, oltre che essere a livello di implementazione, dipende sostanzialmente da “quanti” – oggetti – possono ricevere un messaggio. Prima di tutto lasciatemi mostrare come nasce il concetto di delegato.
Articoli con Tag ‘class’
Objective-C: notifiche e delegati
Come creare un proprio protocollo con delegato
Anche nei tutorial più semplici è possibile incontrare l’uso dei protocolli. Sarà certamente capitato a molti di utilizzare nel vostro view controller un protocollo, inserendo, accanto alla definzione dell’interfaccia, una dicitura simile a:
1 2 3 | @interface myViewController : UIViewController <uiwebviewdelegate> { ... } |
Come selezionare un gruppo di tag che non hanno figli di un certo tipo
jQuery è giunto alla versione 1.4! Oltre a varie nuove features e la “solita” riscrittura del codice, tutta la documentazione è stata rivista in maniera davvero più leggibile rispetto a prima. Ma vediamo alla questione di questo post; problema: aggiungere, tramite jQuery, una classe a tutti i tag a che possiedono l’attributo target impostato a _blank!
iPhone: estendere una classe UIView
Voglio mostrare come è possibile, in modo semplice e rapido, estendere una classe UIView in modo che risponde ad un nuovo metodo di inizializzazione contenente ulteriore codice per personalizzare l’oggetto UIView creato. Come probabilmente alcuni di voi sapranno, Objective-C non supporta un unico costruttore come avviene in altri linguaggi ad oggetti (come Adobe ActionScript o PHP5). E’ possibile, infatti, creare un’istanza di una classe richiamando manualmente diversi costruttori (virtualmente infiniti). Normalmente siamo abituati a creare oggetti UIView con il classico initWithFrame. Immaginiamo però di voler creare una nuova classe di oggetti visuali, a partire da una UIView, con qualche aggiunta; ad esempio una label incorporata. In pratica quello che vogliamo ottenere è che instanziando il nostro oggetto questo crei, oltre che alla UIView, anche un oggetto di tipo UILabel. Ad esempio potremmo voler ottenere alla fine:
1 | ViewLabel *vl = [[ViewLabel alloc] initWithLabelDefine:CGRectMake(0,0,320,80) label:@"Ciao"]; |
Per ottenere questo basta semplicemente creare una nuova classe di tipo UIView e chiamarla ViewLabel:
1 2 3 4 5 6 7 8 9 10 11 12 13 | // // ViewLabel.h // #import <UIKit/UIKit.h> @interface ViewLabel : UIView { UILabel *internalLabel; } - (id)initWithLabelDefine:(CGRect)frame label:(NSString *)labelDefine; @end |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | // // ViewLabel.m // #import "ViewLabel.h" @implementation ViewLabel - (id)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) { // Initialization code } return self; } // // Il nostro nuovo inizializzatore // - (id)initWithLabelDefine:(CGRect)frame label:(NSString *)labelDefine { if (self = [super initWithFrame:frame]) { // qui potete decidere voi come comportarvi, io per // sicurezza ho preso lo stesso frame passato negli // input ma ho azzerato la x e la y frame.origin.x = 0; frame.origin.y = 0; internalLabel = [[UILabel alloc] initWithFrame: frame]; internalLabel.text = labelDefine; [self addSubview:internalLabel]; [internalLabel release]; } return self; } - (void)drawRect:(CGRect)rect { // Drawing code } - (void)dealloc { [super dealloc]; } @end |
Al momento della creazione della nostra nuova classe, potremmo usare:
1 | ViewLabel *vl = [[ViewLabel alloc] initWithLabelDefine:CGRectMake(0,0,320,80) label:@"Ciao"]; |
WordPress: personalizzare la navigazione tra i post
WordPress mette a disposizione numerose funzioni per spostarsi tra i vari post e pagine in avanti ed indietro. Queste sono usate all’interno dei temi, spesso in modo del tutto interscambiabile, anche se contengono alcune differenze. Tutto questo, a dire il vero, creo non poca confusione al momento della scelta della funzione da usare. Eccone alcune note:
Actionscript 3.0 for beginners: lesson #5
Chi ha iniziato a sviluppare codice con linguaggi di scripting come Javascript o lo stesso Actionscript, potrebbe non conoscere affatto il concetto di tipo dato. Con alcuni linguaggi ad alto livello, infatti, si è abituati – nella migliore delle ipotesi – a dichiarare le variabili senza assegnargli un tipo dato specifico, senza contare quei linguaggi che non richiedono nessuna dichiarazione (come ad esempio il PHP – non nella versione strict 5).
Very short trick: ADDED_TO_STAGE
Come abbiamo visto più volte, nel costruttore di una classe che estende un MovieClip può essere necessario aggiungere l’evento ADDED_TO_STAGE per capire quando il nostro MovieClip è disegnato effettivamente sulla stage:
Very short snippet: jQuery auto target blank link
Niente di nuovo, ma lo segno per ricordarmelo: come aggiungere un immagine a tutti i link che aprono una nuova pagina:
1 | jQuery('a[@target=_blank]').addClass('external'); |
Actionscript 3.0 for beginners: lesson #4
Riprendiamo il nostro codice di esempio del TicTacToe (che trovate per intero su Google Code) e iniziamo ad analizzarlo in dettaglio.
Importare le definizioni
Con Actionscript 3.0 è stato fatto un grande lavoro di pulizia e sistemazione nell’alberatura delle classi (contenute nei pacchetti, package) utilizzate durante lo sviluppo. In altri linguaggi di programmazione, come il C ad esempio, quando si desidera utilizzare una funzionalità bisogna esplicitamente “importarla” nel codice. Questa operazione di “importazione” è necessaria per permettere al compilatore di avere tutti i codici e le definizioni legate alla funzionalità che vogliamo usare. In Actionscript 3.0, tuttavia, l’istruzione import non va confusa con l’equivalente C/C++ #include; Actionscript 3.0 mette a disposizione l’istruzione include che è identica all’#include del C/C++. Quest’ultima, infatti, “include” effettivamente del codice che, se usato o meno, viene compilato nell’eseguibile finale. L’istruzione import è di più alto livello e risulta più “intelligente” in fase di compilazione. Essa serve principalemente per accedere alle classi senza doverne specificare il nome completo. In alre parole invece di usare forme del tipo:
Very short trick: versatilità delle classi CSS
I più esperti lo sapranno già, tuttavia mi viene spesso chiesto che differenza c’è tra class e id nei fogli di stile CSS. Una panoramica su alcune differenze e avvertenze è possibile trovarla in Classi e ID nei CSS, tuttavia una caratteristica utile, che distingue class da id, è la possibilità di usare classi multiple.






Ultimi Commenti
Marco: Ti ringrazio moltissimo, mi hai illuminato
ho risolto impostando [cc_objc] //OptionViewController.m -...
Giovambattista Fazioli: @Marco: Ti consiglio un approccio credo più corretto. Se hai eseguito il subclass del tab...
Marco: Scusa lo spam.. ho notato che c’è un errore.. ecco la correzione [cc_objc] /** PrimaClasse.h **/ #import...
Marco: dimenticato.. in [cci]OptionViewController[/cci ] il [cci]@syntetize[/cci] del delegato l’ho messo
luigi: molto chiaro e semplice devo ammettere che anche scrivendo da un pà difficilmente uso delegati creati da...