- 在OC中,我们通过使用协议和分类来实现多继承的效果。
- 协议只能声明方法,而不能有任何实例变量。
- 声明协议:
@protocal protocolName<protocol ,…>
@optional //可选择的
@require//必须的 默认
@end
eg:
1 @protocal rules<NSObject > 2 3 4 5 @interface abc: NSObject <rules> 6 7 @end
//协议中只有方法声明,没有实例变量
在类中的实现文件实现。 在main 函数利用消息机制调用。
4. 分类:给原有类增加方法,不能是实例变量。
1 @interface NSString (detail) 2 3 @end
分类的目的:原有类的方法不足,原有类型方法名太复杂,不易于理解和记忆。
分类是原有类的一部分。
分类中不能有继承,但是可以遵循协议。
5. 其它特性:performSelector
//函数的实参 不带参数的
-(id) performSelector:(SEL)aSelector;
//函数的实参 带一个参数
-(id) performSelector:(SEL)aSelector withObject:(id)
anObjectAsParameter
//函数的实参 最多传俩参数
-(id) performSelector:(SEL)aSelector withObject:(id)
anObjectAsParameter withObject:(id)anotherObjectAsParameter;
6. OC不能声明静态实例变量。可以声明静态全局变量。
时间: 2024-10-13 16:34:34