您的位置:首页 > 移动开发 > Objective-C

Object-c学习笔记十四-----协议

2011-10-03 14:53 405 查看
Object-c和Cocoa有一个正式协议(formal protocol).和C#里面的接口很类似,都要只要协议中有的方法,都要去全部实现。

我们先看一个NSCopying协议

@protocol NSCopying //@protocol是声明协议的标志。后面是协议的名称

-(id)copyWithZone:(NSZone *)zone;//协议中的方法是每个采用者必须实现的方法。

@end //表示结束

采用协议

@interface Car :NSObject <NSCopying>

{

// instance variables

}

//method

@end

获得对象有三种方式new alloc 和copy。copy又分为浅层复制和深层复制。

浅层复制(Shallow Copy)不复制引用对象,新复制的对象只指向现有的引用对象。

深层复制(deep Copy)将复制所有的引用对象。

Engine类采用了NSCoping协议

@interface Engine :NSObject<NSCopying>
@end

采用的时候要实现NSCopying的方法copyWithZone
@implementation Engine
-(id) copyWithZone:(NSZone *)zone
{

Engine *engineCopy;
engineCopy= [[[selfclass]
allocWithZone:zone]init];

return engineCopy;
}
@end

另外object-c 2.0新特性 @optional 和@required

@optional表示可以不选择实现方法。

@required表示一定要实现的方法。

同时采用两个协议 @interface Car :NSObject <NSCopying,NSCoding>。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: