7 votes

Quelles sont les classes iOS qui ne supportent pas la mise à zéro des références faibles ?

Existe-t-il une liste de classes dans iOS qui ne peuvent pas être référencées avec une balise __weak lors de l'utilisation du comptage automatique de référence (ARC) ?

Apple Transition vers les notes de version ARC ne liste que les classes Mac pour l'instant :

Quelles sont les classes qui ne supportent pas les références faibles à zéro ?

Actuellement, vous ne pouvez pas créer de références faibles en zéro aux instances des classes suivantes :

NSATSTypesetter , NSColorSpace , NSFont , NSFontManager , NSFontPanel , NSImage , NSMenuView , NSParagraphStyle , NSSimpleHorizontalTypesetter , NSTableCellView , NSTextView , NSViewController , NSWindow et NSWindowController . En outre, sous OS X, aucune classe du cadre AV Foundation ne prend en charge les références faibles.

Existe-t-il une liste similaire pour les classes UIKit ou même les classes spécifiques à iOS en général ?

Merci.

5voto

rob mayoff Points 124153

Si vous essayez de former une référence faible à un objet qui ne supporte pas les références faibles, le programme devrait mourir immédiatement. Ceci est mentionné dans le Les progrès de l'Objective-C en profondeur vidéo de WWDC 2011 . Vous devez donc savoir immédiatement si vous trouvez une classe qui ne les prend pas en charge.

Je suis presque sûr que le manque de mention dans Transition vers les notes de version ARC signifie que tous les UIKit les cours sont sûrs. Je ne suis pas sûr que l'avertissement sur AV Foundation classes s'applique à iOS ou non. J'ai testé la création d'une référence faible à AVCaptureSession sur iOS 5 et Lion et aucun ne s'est planté. J'ai testé la création d'une référence faible à un NSWindow sur Lion et il s'est planté avec le message cannot form weak reference to instance (0x102232ef0) of class NSWindow .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X