Я схожу с ума по этой ошибке. Компилятор говорит вне области действия для переменной экземпляра NSSString. Никогда раньше этого не было и использовали тысячи переменных экземпляра NSString!iPhone SDK - переменная экземпляра вне области выпуска
Вот мой файл .h класс
#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 синтезируется правильно. Я инициализирую переменную имени файла в методе viewDidLoad. Я хочу использовать его в методе IBAction recordAudio, но компилятор всегда говорит о нераспространении? Почему это, это ошибка или что-то еще?
Это код .m. Метод viewDidLoad где я установить имя файла переменную экземпляра:
- (void)viewDidLoad {
[super viewDidLoad];
NSString * TmpDir = NSTemporaryDirectory(); filename = [NSString stringWithFormat: @ "%. 0f.% @", [NSDate timeIntervalSinceReferenceDate] * 1000.0, @ "caf"]; NSLog (имя файла); }
И метод 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
}
Весь файл .m можно увидеть здесь: http://pastie.org/1021993
Можем ли мы видеть код файла .m? Это черепашка, но, скорее всего, ваша. :-) – Eiko
@Eiko: Я добавил код в свой оригинальный пост. Я сделал это тысячу раз, я не вижу, где я могу пойти не так. Весь файл .m можно увидеть здесь: http://pastie.org/1021993 –
Вам нужно сохранить переменную либо явно, либо позволить синтаксическому сахару свойства сделать это - см. Ответ mharper. – Eiko