2013-05-31 3 views
2

J'utilise cocos2d v1.1.0-beta2b. Mon projet n'utilise PAS ARC. Cela fonctionnait bien mais nous avons juste essayé de changer maintenant la version minimale d'ios pour le projet de 4.3 à 5.0 et nous avons commencé à obtenir des erreurs de compilationnon ARC et faible propriété- ios 5

"synthétiser des propriétés faibles n'est autorisé qu'en mode ARC ou GC"

il semble être à cause de cela (un exemple à partir du code cocos2d)

// The delegate of the scroll layer object. 
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_5_0 
@property (nonatomic, weak) id<CCScrollLayerDelegate> delegate; 
#else 
@property (nonatomic, assign) id<CCScrollLayerDelegate> delegate; 
#endif 

Que dois-je faire pour le résoudre?

Est-il sûr de supprimer simplement cela si du code et laisser juste la ligne @property (nonatomic, assign) id délégué; ? (Je suppose que c'est ok comme jusqu'à aujourd'hui notre code a utilisé cela de toute façon parce que jusqu'à aujourd'hui, nous avons ciblé 4.3 et non 5)

Répondre

0

Utilisation unsafe_unretained au lieu de weak dans votre déclaration de propriété, et il devrait fonctionner essentiellement de la même façon.

unsafe_unretained est pris en charge à la fois iOS 4.x et 5.0 et au-dessus, il vous donne la rétrocompatibilité

+1

"la plupart du temps travaillent de la même manière" semble effrayant. – AJ222

+0

Ce n'est pas ça :) voir plus [1]: http: // It% 20aint% 20that% 20% 20:% 29% 20voir% 20more% 20http: //stackoverflow.com/a/11123303/1704346 –

+0

It ne fonctionne pas comme faible du tout à mon humble avis. –

2

__weak est un arc seulement et disposent il n'y a pas de remplacement officiel

Essayez MAZeroingWeakRef par les cendres micro (https://github.com/mikeash/MAZeroingWeakRef)

OU

PLWeakCompatibility par les laboratoires plausibles (https://github.com/plausiblelabs/PLWeakCompatibility)

-

Vous pouvez tomber en arrière sur assign et le code compilerez mais comme il n'y a pas nilling automatique de variables Assigner (par opposition à __weak vars), il change la sémantique et peut causer des accidents sur la route

+0

Jusqu'à aujourd'hui, le code utilisé était avec l'assign (parce que cela est faux). Est-ce que le programme se comportera de la même manière si je change simplement le si je veux vérifier s'il est plus grand que ios 6? (Avant le changement à min Ios 5 notre programme était assez solide) – AJ222

+0

Assign n'est pas faible. faible n'est pas assign. Id estime qu'il est très probable qu'il restera bien –

Questions connexes