我使用以下方法加载自定义对象:
NSArray* array = [[NSBundle mainBundle] loadNibNamed:@"MyViewItem" owner:nil options:nil];
MyViewItem* myBaseItem = [array objectAtIndex:0];
为了不在我必须做的几个循环中执行一百次 loadNibNamed 操作,我计划将此对象用作“基础”对象,我将填充不同的信息,但始终基于相同的设计(实际上就像在 UICollectionView 中一样)。
我的第一步是在我的循环中设置如下:
for (int i = 0; i < x; i++ ) {
MyViewItem* newItem = [myBaseItem copy];
}
不幸的是,MyViewItem 类试图访问我没有实现的“copyWithZone”。在这一点上,我尝试在其上继承 NSObject(我认为所有 NSObject 都实现了“复制”方法),但问题仍然存在相同的错误。所以我尝试继承 NSCopying,并实现我的 copyWithZone 方法,该方法如下(虽然不起作用):
@interface MyViewItem : UIView <NSCopying>
// some stuff
@end
@implementation MyViewItem
// some stuff
- (id)copyWithZone:(NSZone *)zone
{
MyViewItem* copy = [[MyViewItem allocWithZone:zone] init];
// What should i do here ?
return copy;
}
@end
我错过了什么?我已经阅读了许多有关复制的问题,但我无法解决我的问题:(谢谢!