2011-07-04 11 views
10

Quindi ho un array, pieno di CGRects. Quella parte va bene. Il problema è quando vado a recuperare i CGRects dall'array, sto ricevendo strani errori. Controlla il mio codice. Grazie in anticipo.Conversione di un CGRect in un NSValue in una matrice e viceversa

NSArray *frameLocations = [NSArray arrayWithObjects: 
          [NSValue valueWithCGRect:CGRectMake(20, 20, 121, 124)], 
          [NSValue valueWithCGRect:CGRectMake(176, 20, 121, 124)], 
          nil]; 

Che ottengo il frame in un ciclo, in questo modo:

CGRect *imageFrame = [[frameLocations objectAtIndex:i] CGRectValue]; 

Ho provato un mazzo di diverse varianti, diffondendo la linea dal su più variabili. Ma non riesco a capirlo. Grazie in anticipo.

risposta

15

Prova:

CGRect imageFrame = [[frameLocations objectAtIndex:i] CGRectValue]; 

si ottiene un vero e proprio CGRect indietro, non un puntatore a un CGRect, perché è un tipo C-stile primitivo, non un oggetto Objective-C.

A parte questo il tuo codice sembra corretto.

+0

Wow, mi sento stupido. Molte grazie. Questo mi aiuta davvero. – Andrew

+2

Non sentirsi stupidi - la verità è che ciò che è un primitivo in stile C e che cos'è un oggetto Objective-C è spesso solo una decisione pragmatica legata alle prestazioni. Avrai un'idea di che cosa è nel tempo, ma non c'è alcuna differenza intrinseca nelle convenzioni di denominazione o qualcosa del genere, quindi è facile confondere le due cose all'inizio. – Tommy

+5

Sì, avrebbero dovuto chiamarlo Soggettivo-C. –

Problemi correlati