我很难搞清楚为什么我会遇到错误:
CCSprite copyWithZone无法识别的选择器发送到实例
我想在Rectangle对象中保留对rectangleSprite的引用。我在Rectangle.m文件中合成它。我是否正在尝试将rectangleSprite存储在Rectangle的rectangleSprite属性中?
#import "CCNode.h"
#import "cocos2d.h"
#import "CCSprite.h"
@interface Rectangle : CCNode
{
CCSprite *rectangleSprite;
}
@property(nonatomic,readwrite,copy) CCSprite *rectangleSprite;
@end
...
CCSprite *rectangleSprite = [CCSprite spriteWithFile:@"rectangle.png"];
Rectangle *rectangle = [[Rectangle alloc] init];
rectangle.rectangleSprite = rectangleSprite;
...
答案 0 :(得分:2)
您已将rectangleSprite
属性定义为copy
。这意味着CCSprite
类必须符合NSCopying
协议(这意味着它必须实现copyWithZone:
方法)。
该错误表示CCSprite
未实现copyWithZone:
。
如果您只想保留该值,请在属性声明中删除copy
。使用strong
(或retain
使用的是MRC)代替copy
。
如果要在将对象分配给属性时创建对象的副本,则只能使用copy
。但这需要该类支持复制。