Objective-C中的协议、对象复制与委托模式
1. 对象复制
在编程中,有时需要复制一个完整的对象,这就涉及到复制对象的各个部分,如汽车的发动机和轮胎。
1.1 复制发动机
要复制发动机,发动机类 Engine 需要采用 NSCopying 协议。
@interface Engine : NSObject <NSCopying>
@end // Engine
由于采用了 NSCopying 协议,需要实现 copyWithZone: 方法:
- (id) copyWithZone: (NSZone *) zone
{
Engine *engineCopy;
engineCopy = [[[self class]
allocWithZone: zone] init];
return (engineCopy);
} // copyWithZone
这里使用 [self class] 是为了确保在复制子类(如 Slant6 )时,能正确创建子类的实例,避免内存溢出错误。内存管理方面, alloc 返回的对象保留计数为1,且未释放,符合复制操作的要求。
超级会员免费看
订阅专栏 解锁全文
8

被折叠的 条评论
为什么被折叠?



