Je suis fou de cette erreur. Le compilateur dit hors champ pour une variable NSSString d'instance. Jamais eu cette chose avant et utilisé des milliers de variables d'instance NSString!iPhone SDK - variable d'instance hors de portée problème
Voici mon fichier .h de classe
#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>
#import <CoreAudio/CoreAudioTypes.h>
#import "Snapshot.h"
@interface RecordAudioViewController : UIViewController <AVAudioRecorderDelegate, AVAudioPlayerDelegate> {
NSString *filename;
}
@property (nonatomic, retain) NSString *filename;
- (IBAction) recordAudio;
- (IBAction) playAudio;
@end
variable est synthétisé correctement. J'initalise la variable filename dans la méthode viewDidLoad. Je veux l'utiliser dans la méthode IBAction recordAudio, mais le compilateur dit toujours hors champ? Pourquoi est-ce, est-ce un bug ou quelque chose?
Voici le code .m. Procédé viewDidLoad où je configurer l'instance nom de variable:
- (void)viewDidLoad {
[super viewDidLoad];
NSString * tmpdir = NSTemporaryDirectory(); filename = [NSString stringWithFormat: @ "%. 0f.% @", [NSDate timeIntervalSinceReferenceDate] * 1000.0, @ "caf"]; NSLog (nom de fichier); }
Et la méthode IBAction
- (IBAction) recordAudio
{
NSLog(filename); // here I get out of scope message when moving over with mouse cursor and when steping over this line EXC_BAD_ACCESS
}
Le fichier .m entier peut être vu ici: http://pastie.org/1021993
C'est un bug, mais probablement le tien. :-) – Eiko
@Eiko: J'ai ajouté le code dans mon message original. Je l'ai fait mille fois, je ne vois pas où je pourrais me tromper. Le fichier entier .m peut être vu ici: http://pastie.org/1021993 –
Vous devez conserver la variable explicitement ou laisser le sucre syntaxique de la propriété le faire - voir la réponse de mharper. – Eiko