2017-08-28 5 views
0

J'ai un fichier de constante commune qui aura toutes mes macros de l'objectif C, pour accéder à mon objectif c macros dans la classe rapide I ont prévu de mettre en œuvre la façon suggérée dans le article suivant.Comment rendre ma méthode de classe Objective C visible uniquement pour les classes Swift

Way To Access Objective C macros In Swift

En gros, ce qui a suggéré est de créer .h & fichier .m et ajouter des méthodes publiques qui renvoient la macro que nous voulons avoir accès too.Eg

J'ai une macro objectif C pour obtenir la couleur personnalisée

#define THEME_COLOR [UIColor colorWithRed:115.0/255.0 green:190.0/255.0 blue:123.0/255.0 alpha:1.0f] // this macro is not accessible inside swift class 

Je suis en train de créer une méthode comme suit

+ (UIColor *) themeColor { 
    return THEME_COLOR; 
} 

Maintenant dans ma classe rapide, je suis capable d'accéder à cette méthode. Puisque la méthode ci-dessus est déclarée dans une classe globale, toutes mes classes C de l'objectif accèdent également à cette méthode. Je veux donner accès à cette méthode seulement si on y accède à partir de classes rapides est-il possible de le faire? Ou toute autre meilleure approche disponible?

Toute suggestion ou aide grandement appréciée. Merci à l'avance

Répondre

2

N'importez pas le fichier .h qui définit +themeColor dans votre code ObjC. Mettez-le dans votre tête de pont vers Swift.

(Cela étant dit, je ne vous dérangerais pas, je vous recommande fortement de vous débarrasser des macros et de l'utilisation de la méthode partout, et si vous ne voulez pas vous débarrasser de la macro, Ne cachez pas la méthode d'ObjC. Les méthodes sont généralement une meilleure solution.)

+0

Votre réponse a fait l'affaire! Merci, @ Rob Napier. Je travaille sur le projet déjà développé et il a plusieurs macros, la conversion de tout ce qui est en cours serait un travail de longue haleine. Plusieurs personnes travaillent dans cette base de code, donc sans restriction, cela rendrait le code maladroit au cours de la période –