2012-05-01 11 views
5

Perché la trasmissione di un CGImageRef a un puntatore di oggetto non richiede informazioni sulla gestione della memoria (__bridge ecc.)? Ad esempio, se immagine è di tipo UIImage *, e strato è strato di un UIView sottostante, quindi la seguente riga di codice non provoca reclami dal compilatore:perché questo cast non richiede il bridging sotto ARC?

layer.content = (id)[image CGImage]; 

risposta

6

Per citare Transitioning to ARC Release Notes:

il compilatore Maniglie CF oggetti restituiti dai metodi di cacao

Il compilatore capisce metodi Objective-C che restituiscono Nucleo FondazioneI tipiseguono le convenzioni di denominazione del cacao storiche (see Advanced Memory Management Programming Guide). Ad esempio, il compilatore conosce che, in iOS, il CGColor restituito dal metodo CGColor di UIColor è non di proprietà. È comunque necessario utilizzare un cast di tipo appropriato, come illustrato da questo esempio ...

(OK, non proprio il cacao-touch, ma hey!).

Poiché CGImage restituisce un oggetto CoreFoundation, non è necessario un cast __bridge.

+1

Una società più grande mi ha chiesto di unirmi al loro team mobile "Cocoa only" ... Sembra che nessuno si preoccupi veramente delle differenze 'cacao' e' cacao-touch' e basta chiamare tutto Cocoa (anche ObjC), è un peccato che questo a quanto pare capita anche a Apple. – JustSid

+0

Quindi, se ho capito bene, ARC non gestisce gli oggetti CF ad eccezione di quelli restituiti da un metodo Cocoa? – Inept

+1

@JustSid * i * care =) – justin

Problemi correlati