在iOS中创建新对象会引发copywithzone无法识别的选择器错误

Atm*_*tma 3 cocoa-touch objective-c nsobject ios

我有一个简单的对象,如下所示:

#import <Foundation/Foundation.h>
#import <Parse/Parse.h>

@class MyUser;

@interface MyCycle : NSObject


@property (nonatomic, copy) NSNumber *myNumber;
@property (nonatomic, strong) MyUser *user;
@property (nonatomic, strong) NSArray *data;


@end
Run Code Online (Sandbox Code Playgroud)

这是实施:

#import "MyCycle.h"

@implementation MyCycle



@end
Run Code Online (Sandbox Code Playgroud)

这是用户对象:

#import <Foundation/Foundation.h>
#import <Parse/Parse.h>


@interface MyUser : NSObject

@property (nonatomic, copy) NSString *usersName;
@property (nonatomic, copy) NSString *gender;
@property (nonatomic, copy) NSString *email;
@property (nonatomic, copy) NSString *password;
@property (nonatomic, copy) NSString *phoneNumber;
@property (nonatomic, strong) UIImage *profileImage;
@property (nonatomic, strong) PFFile *profileImageFile;




@end
Run Code Online (Sandbox Code Playgroud)

我分配此对象并使用以下内容填充它:

MyCycle *cycle = [[MyCycle alloc] init];
        cycle.myNumber = @1;
        cycle.data = [[NSArray alloc]init];
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[MyCycle copyWithZone:]: unrecognized selector sent to instance
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况,我该如何解决?

Leo*_*ica 6

在代码的某处,您有一个尝试复制MyCycle实例的代码.也许你使用一个对象作为字典的关键?如果您希望继续此行为,则需要为您的类实现NSCopying协议.