2011-10-31 8 views
0

私は今このコードを数日間戦っています。私は本当にあなたの洞察に感謝します。だからここでは...viewWillDisAppear内のNSStringに関する問題

NSString *fileName; 

として私.hファイルで宣言し、後で

@property (nonatomic, copy) NSString *fileName; 

としてviewWillDisappear内部アクセスできません。さ

fileNameですこれは、オブジェクトをnilとして表示するか、またはデバッグするときに奇妙な値を表示します。 、ファイル名の

印刷の説明:私は、私のコンソールショーにこのMSGデバッグする場合 FileNumber1

を私はviewWillDisappearに到達したとき、私のコンソールには、この例を示します、ファイル名の

印刷の説明:

ええ、ちょうどfileNameのための何も。値は単に消える..私はちょうどなぜ知りません!

詳細:私のinitメソッド内

は、私は次のようにしますし、それが正常に動作します。私はちょうど罰金fileNameにアクセスすることができますが、viewWillDisappearの内側に、私は次のことを試みることによって、私のstandardUserDefaultsに保存しようとしているプログラムを通じて

fileName = [[NSString alloc] initWithString:(NSString *)CFURLGetString(pdfURL)]; 
    fileName = [[fileName lastPathComponent] stringByDeletingPathExtension]; 
    fileName = [fileName stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

NSUserDefaults *ud = [[NSUserDefaults standardUserDefaults] autorelease]; 
    NSArray *tmp = [NSArray arrayWithArray:someMutableArray]; 
    [ud setObject:tmp forKey:fileName]; // THE PROBLEM IS HERE WITH fileName AS AKEY 
    [ud synchronize]; 
    [tmp release]; 

この時点someMutableArrayではアクセス可能ですが、fileNameですない。どんな洞察、思考、アイデアも感謝します。あなたのinitメソッドで

答えて

3

読むためにそれを変更self.fileName =

、プロパティ、あなたではなく変数を使用している現在ので、あなたは、文字列のコピーが作成されるように、あなたの財産のメソッドを使用する必要が

オートレリースされた文字列を割り当てています。 self.fileNameを使用すると、文字列がコピーされ、オートリリースされません。

+0

クレイグ、すばらしい答えをいただきありがとうございます。それは実際に上記の問題を解決しました。私は今、他の問題を抱えていますが、少なくともこれには関係しません:-) – Q8i

関連する問題