-5

J'ai une configuration de classe singleton de la manière suivantesélecteur Unrecognized envoyé à l'arc classe singleton

Mon .h a le code suivant

+ (Singleton *)sharedInstance; 

.m ressemble à la

suivante
+ (Singleton *)sharedInstance 
{ 
     if (nil == sharedInstance) { 
      sharedInstance = [[Singleton alloc] init]; 
    } 
    return sharedInstance; 
} 

Lorsque j'essaie d'accéder à une méthode de la classe Singleton à partir d'une autre classe, j'obtiens l'erreur suivante

reason: '+[Singeleton myMethod:]: unrecognized selector sent to class 

myMethod existe dans ma classe Singleton.

La classe unique utilise ARC alors que la classe appelante est non-ARC.

Je ne suis pas sûr si cela a quelque chose à voir avec cela. MyMethod est un NSNotification et j'appelle cette méthode en lui envoyant un objet de dictionnaire et en utilisant le nom de notification. Edit: J'ai essayé de lire et d'implémenter des suggestions sur d'autres threads qui ne semblaient pas aider.

+0

pouvez-vous partager votre implémentation de Singleton? –

+0

myMethod contient des paramètres? –

+0

il n'y a rien avec arc. Comment avez-vous appelé le 'myMethod'? –

Répondre

3

Vous semblez avoir invoqué une méthode de classe au lieu d'une méthode d'instance.

Alors vous avez très probablement fait:

[Singleton myMethod:...]; 

Corriger votre appel à:

[[Singleton sharedInstance] myMethod:...]; 

Edit:

Ow, je réalise maintenant un problème encore pire; votre usine de singleton est cassée. Il n'y a pas d'instance que vous retournez. Essayez cette variante. Ce n'est pas sûr pour les threads mais peut être assez bon pour vous.

+ (Singleton*)sharedInstance 
{ 
    static Singleton *instance = nil; 
    if (nil == instance) 
    { 
     instance = [[Singleton alloc] init]; 
    } 
    return instance; 
} 
Questions connexes