【OC笔记】分类和延展
来源:互联网 发布:linux命令 mkdir 编辑:程序博客网 时间:2024/05/21 17:45
延展(扩展)是一种匿名的分类,即:分类名为空,在延展中可以给类扩展方法和属性,这些方法和属性是相对私有的,不能被继承。相对私有:调用头文件即可使用。
非正式协议:NSObject类,或者Foundation框架中的类的分类,叫做非正式协议。用于自己定义的类的分类不能称之为非正式协议。
协议:OC中的协议类似于Java中的接口,在协议中提供了一些方法即:只是定义一些方法,不提供方法的实现,需要让遵守该协议的某个类去实现。在协议中的方法分为两种:@required(必须实现) @optional(选择性实现)
代理:某个对象没有办法实现某个方法,需要将这个方法委托给一个对象(一般是id类型)去做。那么这个对象就是原对象的代理。一般需要告诉委托代理的内容是什么(用协议来约束代理对象)。
程序实例:
分类
//类的声明延展
@interface Person : NSObject
@property (nonatomic, copy)NSString *name;
@end
//分类
@interface Person (base)
-(void)run;
@end
//类的实现
@implementation Person
-(void)run
{
NSLog(@"person run");
}
@end
协议和代理@interface Person : NSObject
@end
//类扩展
@interface Person ()
//可以定义一些私有的方法和属性(类的对象不能调用,只能用self)
@property (nonatomic, assign) int age;
-(void)eat;
@end
@implementation Person
-(void)eat
{
NSLog(@"person eat");
}
@end
Person类和协议定义
Phone类的声明与实现@class Person;
//协议的声明
@protocol callPhone <NSObject>
@required
-(void)linkNum:(int)num;
@end
@interface Person : NSObject
//人打电话
-(void)callNum:(int)num;
//设置代理(实现打电话的方法)
@property (nonatomic, strong) id<callPhone> delegate;
@end
@implementation Person
-(void)callNum:(int)num
{
NSLog(@"人要打电话");
//判断代理是否实现代理方法
if([self.delegate respondsToSelector:@selector(linkNum:)] )
{
[self.delegate linkNum:num];
}
}
@end
main函数#import "Person.h"
@interface Phone : NSObject <callPhone>
@end
@implementation Phone
-(void)linkNum:(int)num
{
NSLog(@"正在拨号:%d",num);
}
@end
#import "Person.h"
#import "Phone.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Person *p = [Person new];
Phone *phone = [Phone new];
p.delegate = phone;
[p callNum:110];
}
return 0;
}
- 【OC笔记】分类和延展
- oc协议,延展,分类
- OC视频笔记-类目和延展
- 黑马程序员---OC学习笔记之分类(Category)延展
- 分类和延展
- 黑马程序员 oc随机 分类与延展
- OC Category 分类 Extension 延展.md
- OC学习:类目和延展
- OC语言学习 (五) Category分类 和 类的延展Extension
- 黑马程序员——ios开发基础之OC中的分类、协议、延展和代理
- OC-延展
- OC学习之延展和协议
- OC循环渐进:类目和延展
- OC学习:协议、类目和延展
- OC视频笔记5.1(类目的概念和使用)5.2(延展)
- OC基础第六章:分类(category) 、延展(Extension)
- 【黑马程序员】OC-分类(Category)及延展(Extendsion)
- ios xcode6 创建分类和延展
- 【OC语言】第八天·block和Protocol
- 【OC语言】第九篇·NSString,NSArry,NSDictionary
- 【OC语言】第十篇·NSFileManager、NSDate、沙盒、copy以及单例模式
- 【OC笔记】关于MRC中的注意问题
- 【OC笔记】MRC中多对象内存管理以及循环retain
- 【OC笔记】分类和延展
- 如何获取网站Icon
- 【OC笔记】block的用法
- 外公外婆
- 一个页面有多个提交按钮的时候
- HDU 5367动态建立线段树
- iOS总结(自定义button)
- 瞧,这就是UE4 C++
- 解决Putty中文乱码