2010-10-10 4 views
7

, je veux donc mettre une variable d'instance dans un NSString comme celui-ci:NSString avec instance variable

NSString * TheAnswer = (@ "La réponse est% @ \ n", self.answer);

Je ne suis pas sûr d'avoir raison ou non. Je pensais que NSString fonctionnerait comme NSLog mais apparemment ce n'est pas le cas.

TheAnswer revient en tant que seule la variable d'instance sans « La réponse est »

Quelqu'un peut-il me dire pourquoi et comment résoudre ce problème?

Merci.

Répondre

16
NSString *theAnswer = [NSString stringWithFormat:@"The answer is %@", self.answer]; 
+0

Merci, cela a fonctionné. – TheAmateurProgrammer

+3

@theAmateurProgrammer: Vous devriez alors accepter sa réponse. –

0

Je voudrais également noter en plus de répondre dj2 que NSLog est une méthode pas un objet. Les objets ne sont pas initialisés sous la forme de ("param1", param2) Pour le cas de NSString vous faites ce que dj2 a fait:

NSString *theAnswer = [[NSString alloc] initWithFormat:@"The answer is %@", self.answer]; 

Si vous devez déclarer TheAnswer comme pointeur NSString, parce que tous les objets Objective-C sont des pointeurs, puis à nouveau dire Dans quelle classe sera-t-il alloué (dans ce cas, NSString) alors vous dites comment vous allez l'initialiser et dans ce cas vous utilisez initWithFormat: pour l'initialiser.

+0

Merci pour votre réponse. Je veux demander quelle différence cela ferait-il si j'initialisais NSString ou pas? – TheAmateurProgrammer

+0

@theAmeratureProgrammer: En fait, j'ai posé une question après cela, l'initialiser de cette façon ne le libérera pas automatiquement, mais l'inverse le fera. Alors, faites votre choix. –