0

我正在使用带有 arc 的 iOS 5 SDK。我想NSObject从 VC1 视图控制器传递到 VC2 视图控制器,进行修改并放回 VC1 控制器。我不想从 VC1 和 VC2 控制器中指向相同的 nsobject。每当我传递 nsobject 时,它应该创建该 nsobject 的副本并进行修改。(不要修改实际的 nsobject)。

我试过下面的代码,但它崩溃并给出错误

-[ImageObject mutableCopyWithZone:]:无法识别的选择器发送到实例 0x1364ec20

代码:

我有 NSObject 作为:

@interface ImageObject : NSObject
@property (copy,nonatomic) NSString *path;
@property (nonatomic, readwrite) int id;
@end

在 VC1 视图控制器中:

我将我的 nsobject 传递给 VC2 视图控制器,如下所示:

VC2ViewController *vc2 = [[VC2ViewController alloc] initWithNibName:@"VC2ViewController" bundle:nil];
vc2.imageObj = [imgObj mutableCopy];
[self.navigationController pushViewController:vc2 animated:YES];

在 VC2 视图控制器中:

VC2ViewController.h 文件

#import "ImageObject.h"
@interface VC2ViewController : UIViewController
@property (retain,nonatomic) ImageObject *imageObj; 
@end

VC2ViewController.m 文件

// 修改nsobject如下

-(void)modifyObject
{
UIViewController *previousViewController = [self.navigationController.viewControllers objectAtIndex:self.navigationController.viewControllers.count-2];
        if ([previousViewController isKindOfClass:[VC1ViewController class]])
        {
            VC1ViewController *parent = (VC1ViewController *) previousViewController;
            if(parent != nil)
            {
                _imageObj.id = 2;
                [parent reloadData:_imageObj];
            }
            parent = nil;
        }
[self.navigationController popViewControllerAnimated:YES];
}

有什么想法吗?如何解决这个问题?

4

1 回答 1

1
于 2013-05-07T10:02:56.173 回答