我的应用程序崩溃,原因如下:

-[MyClassName copyWithZone:]无法识别的 Select 器已发送到实例

我有两门课.比如说1班和2班.

Class1看起来像:

1班.H

@interface Class1 : NSObject {
    NSString *imagemd5CheckSum;
    UIImage *image;
    NSData *fileChunkData;
}

@property (nonatomic, copy)NSString *imagemd5CheckSum;
@property (nonatomic, copy)UIImage *image;
@property (nonatomic, copy)NSData *fileChunkData;

@end

1班.M

@implementation Class1

@synthesize image;
@synthesize fileChunkData;
@synthesize imagemd5CheckSum;

-(id) init{
    [self setImage:nil];
    [self setFileChunkData:nil];
    [self setImagemd5CheckSum:@""];

    return self;
}

-(void)dealloc{
    [imagemd5CheckSum release];
    [image release];
    [fileChunkData release];

    fileChunkData = nil;
    imagemd5CheckSum = nil;
    image = nil;

    [super dealloc];
}
@end

**

2级看起来像

**

2班.H


#import "2班.H"
@interface Class2 : NSObject {
    Class1 *obj1;
    Class1 *obj2;
    Class1 *obj3;
}

@property (nonatomic, copy)Class1 *obj1;
@property (nonatomic, copy)Class1 *obj2;
@property (nonatomic, copy)Class1 *obj3;

@end

2班.M


@implementation Class2

@synthesize obj1,obj2,obj3;

-(id) init{
    [self setObj1:nil];
    [self setObj2:nil];
    [self setObj3:nil];

    return self;
}

-(void)dealloc{
    [obj1 release];
    [obj2 release];
    [obj3 release];

    obj1 = nil;
    obj2 = nil;
    obj3 = nil;

    [super dealloc];
}
@end

坠毁情况

Class2 *class2 = [[Class2 alloc] init];

Class1 *class1 = [[Class1 alloc] init];

[class1 setImagemd5CheckSum:@"this is md5"];
[class1 setImage:myimage];
[class1 setFileChunkData:myData];

[class2 setObj1:class1]; // This line is crashed..

...

当我拨打[class2 setObj1:class1];时,应用程序崩溃了,原因如下:

-[Class1 copyWithZone:]无法识别的 Select 器已发送到实例

我如何解决这个问题?

推荐答案

-setObj1:方法声明为copy,因此它对Class1对象调用-copy.-copy就打-copyWithZone:nil.因此,您要么需要实现NSCopying协议(这意味着实现-copyWithZone:),要么将属性从copy更改为retain.

Objective-c相关问答推荐

目标 C:什么是(id)发件人?

来自 NSDate 的日期名称?

判断正在使用的应用程序版本

增加推送通知徽章 iPhone

Objective-C 的 Eclipse 插件?

Container View 好像有 UINavigationBar 一样被下推?

如何在 iPhone 上默认显示数字键盘?

Grand Central Dispatch (GCD) 与 performSelector - 需要更好的解释

未找到 RKObjectMapping.h

dispatch_async(dispatch_get_main_queue(), ^{...});等到完成?

当表格重新出现时,UITableView 不会自动取消 Select 选定的行

从 UIImage 获取 Exif 数据 - UIImagePickerController

如何在 Objective-C 中将 NSString 解析为 BOOL?

AVAssetImageGenerator 提供旋转的图像

NS_ASSUME_NONNULL_BEGIN 宏

交换 NSMutableArray 中的元素

ARC时代的财产与ivar

Apple 说 NSManagedObjectContext 归创建它的线程或队列所有时是什么意思?

将 NSDate 舍入到最接近的 5 分钟

Objective-C in,out,inout,byref,byval, .. 等等.这些是什么?