Objective-C: NSLog() su struct C

giovedì 29 ottobre, 2009

La sintassi NSLog(@"%@", ... ); funziona ed è utilizzata per ottenere informazioni sugli oggetti, ma non funziona su tipi dato C come struct CGRect o CGPoint, ad esempio. Per poter sfruttare NSLog(@"%@", ... ); anche su struct di tipo C possiamo appoggiarci a funzioni di conversione come NSStringFromCGRect() o NSStringFromCGPoint:

Objective-C:
  1. CGrect mioRect = (CGRect){10,20,30,40};
  2. CGPoint mioPoint = (CGPoint){32,64};
  3. //
  4. NSLog( @"Info rettangolo: %@", NSStringFromCGRect(mioRect) );
  5. NSLog( @"Info point: %@", NSStringFromCGPoint(mioPoint) );

Nello specifico è possibile perfezionare tale procedure scrivendosi delle piccole macro utili come:

Objective-C:
  1. #define NSLogRect(rect) NSLog(@"%s: (%0.0f, %0.0f) %0.0f x %0.0f", #rect, rect.origin.x, rect.origin.y, rect.size.width, rect.size.height)

Oppure:

Objective-C:
  1. #define NSLogCGPoint(point) NSLog(@"%s: (%0.0f, %0.0f)", #point point.x, point.y)
  2.  
  3. CGPoint mioPoint = (CGPoint){32,64};
  4. NSLogCGPoint(mioPoint);

Che darà come output:

Objective-C:
  1. mioPoint: (32, 64)

Post correlati

Questo articolo ti è stato utile?: Per nientePocoAbbastanzaMoltoMoltissimo
Loading ... Loading ...

Non ci sono commenti per questo Post

Lascia un commento

TAG XHTML PERMESSI: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> INSERIMENTO CODICE:
<pre></pre>         // blocco generico
[code][/code]       // blocco generico
[as][/as]           // Actionscript
[css][/css]         // CSS Style Sheet
[html][/html]       // HTML
[js][/js]           // Javascript
[objc][/objc]       // Objective-C
[php][/php]         // PHP
[sql][/sql]         // SQL