2

私のviewDidLoadのこの@try-@catchブロックは、戻るときにEXC_BAD_ACCESSでクラッシュします。キャッチで実行され、アラートも表示されません。

    @try
    {        
        errorText = @"thumbnails_array";

        unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
        // Customize unarchiver here
        self.thumbnails_array = [unarchiver decodeObjectForKey:@"thumbnails_array"];
        [unarchiver finishDecoding];
        [unarchiver release];


        errorText = @"ThumbNailViewController";

        archivePath = [app.phojoArchiveDir stringByAppendingPathComponent:@"ThumbNailViewController.archive"];
        data = [NSData dataWithContentsOfFile:archivePath];
        unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
        // Customize unarchiver here
        [unarchiver decodeObjectForKey:@"self"];
        [unarchiver finishDecoding];
        [unarchiver release];

        errorText = @"assetsGroupURL";

        archivePath = [app.phojoArchiveDir stringByAppendingPathComponent:@"assetsGroupURL.archive"];
        data = [NSData dataWithContentsOfFile:archivePath];
        unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
        // Customize unarchiver here
        app.assetsGroupURL = [unarchiver decodeObjectForKey:@"assetsGroupURL"];
        [unarchiver finishDecoding];
        [unarchiver release];


    }
    @catch (NSException *exception) 
    {
       UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Phojo is unable to restore the previous editing session." delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];
        [alert show];
        [alert release];

        NSLog(@"Exception %@ thrown while unarchving %@: Reason: %@ Items in userInfo = %d Stack Trace: %@", [exception name], errorText, [exception reason], [[exception userInfo] count], [NSThread callStackSymbols]);  
        [self.thumbnails_array   release];
        self.thumbnails_array = nil;
        [app.assetsGroupURL release];
        app.assetsGroupURL = nil;

        return;


    }

このコードは viewDidLoad で実行され、アプリの前回の実行中にアーカイブされたデータを取得します。このコードで、アーカイブが理解できないという例外が発生しました。ただし、クラッシュすると、起動時とキャッチ時にクラッシュするため、アプリを実行する方法はまったくありません。何か案は?

4

1 に答える 1

2

assetsGroupURLまたはthumbnails_arrayプロパティのいずれか(または両方) が として宣言されていretainます。それは問題ありませんが、 と の両方を呼び出すと[self.theProperty release]、2 回self.theProperty = nil解放することになります。呼び出しを削除すると、EXC_BAD_ACCESS が表示されなくなります。thePropertyretainreleaserelease

于 2012-02-10T17:31:23.420 に答える