LIRE Cette méthode: beginAnimations: context: Ceci est une méthode de classe UIView. Le contexte nécessite un paramètre qui est un type de void-pointeur, et j'ai besoin d'envoyer un UIImageView au contexte. Je reçois un avertissement qui dit que void * a été interdit lorsque j'utilise ARC. Alors, comment puis-je envoyer UIImageView au contexte, sauf utiliser ARC.Quand j'utilise le projet ARC dans IOS, comment puis-je utiliser void *?
1
A
Répondre
0
Les commentaires ci-dessus ont fourni la bonne réponse pour ce cas particulier (utiliser les méthodes d'animation par bloc) mais en général si vous avez une API qui prend un contexte void *
et que vous souhaitez passer un objet, je le trouve mieux pour convertir votre id
en un CFTypeRef
afin que vous puissiez obtenir une sémantique de gestion de la mémoire manuelle sur le pointeur (CFTypeRef
est un typedef pour void *
), etc. Notez cependant que cela nécessite que le rappel doive être appelé pour que votre objet soit libéré (c'est-à-dire reconverti dans la gestion intégrée de l'ARC).
Voici un exemple pour une API imaginaire que je viens Imaginée:
- (void) doSomethingWithObject: (id) object {
// use CFBridgingRetain() to turn object into a manually-retained CFTypeRef/void*
[someObject performBackgroundTaskWithTarget: self
selector: @selector(bgTask:)
context: CFBridgingRetain(object)];
}
- (void) bgTask: (void *) context
{
// use CFBridgingRelease() to turn our void*/CFTypeRef into an ARC-managed id
id object = CFBridgingRelease((CFTypeRef)context);
...
}
Questions connexes
- 1. Comment utiliser le cadre non ARC dans l'application iOS ARC
- 2. Comment appliquer ARC uniquement dans iOS Projet
- 3. SDWebImage est ARC uniquement. Activez ARC pour le projet ou utilisez le drapeau -fobjc-arc IOS
- 4. Comment convertir iOS 4 projet (non ARC) dans iOS 5 (avec ARC)
- 5. quand utiliser void * en C++
- 6. Comment utiliser le nouveau SDK iOS Google Maps dans aucun projet ARC
- 7. Comment utiliser le framework Mailcore dans mon projet IOS?
- 8. Comment utiliser le convertisseur ARC pour un seul fichier dans un projet ARC?
- 9. Objectif C - ARC - Quand utiliser @autoreleasepool
- 10. erreur lipodystrophie coverting projet iOS ARC
- 11. Raftiver un seul fichier dans le projet pour utiliser ARC?
- 12. Comment réinitialiser NSMutableDictionary dans un projet ARC?
- 13. TWRequition fuite dans le projet ARC
- 14. Comment utiliser le sujet void dans RxJava2?
- 15. Fichier introuvable quand le Projet iOS archivage
- 16. Utiliser C++ dans le projet iOS
- 17. Comment activer ARC à l'échelle du projet dans Xcode 4.2
- 18. Cadre iOS ARC
- 19. comment utiliser: - (void) saveErrorHandler: (void (^) (NSError *)) errorCallback;
- 20. IOS: propriété sans ARC
- 21. Comment changer pour utiliser ARC du projet nonARC?
- 22. Autoreleasepool avec ARC dans iOS
- 23. Singleton fonctionne dans un projet avec ARC et non-ARC?
- 24. Comment utiliser CFMutableDictionaryRef avec ARC
- 25. ARC dans les questions iOS
- 26. objet Dealloc dans le projet OSX ARC est désactiver
- 27. Utiliser void dans iife
- 28. conversion d'un projet non ARC en ARC
- 29. ios: objet over release dans ARC
- 30. Utilisation d'une bibliothèque statique ARC dans un projet NON-ARC
Utilisez les méthodes d'animation de bloc de UIView. C'est plus pratique car vous n'avez pas de délégué d'achèvement d'animation ailleurs. –
Plus les docs disent d'utiliser les méthodes d'animation de bloc. –
Merci pour votre aide. Je vais apprendre à utiliser les méthodes d'animation par blocs de UIView. –