黑马程序员一分类,类的本质,description,SEL
来源:互联网 发布:h5穿上军装源码 编辑:程序博客网 时间:2024/06/04 18:09
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一.分类 Category 类别,类目
可以给某一个类拓充一些方法,不修改原来类的代码
//声明
@interface类名(分类名称)
@end
//实现
@implementation类名(分类名称)
@end
1.分类的好处
不同功能的方法写在不同的分类,有利于团队开发
2.分类的作用
可以在不改变原来类内容的基础上,可以为类增加一些方法
3.使用注意
只可以增加方法,不能增加成员变量.
分类方法实现中可以访问原来类中声明的成员变量
分类的优先级最高,优先去分类中查找,如果没有去原来的类中找.分类可以重新实现原来类中的方法.若重新写原来类中的方法会覆盖原来的方法,会试原来方法失效,没办法再使用
方法调用优先级:分类->原来类->父类
如果两个分类实现同一个方法,实现最后编译那个分类中的方法.
给系统自带的方法添加一个类方法:计算输入字符串中含数字的个数
<span style="font-size:14px;">#import "NSString+Number.h"@implementation NSString (Number)+ (int)numberCountOfString:(NSString *)str{// int count = 0;// for (int i = 0 ; i < str.length ; i++ )// {// unichar c = [str characterAtIndx : i];//获取这个字符串某个位置的字符// if (c >= '0' && c <= '9')// {// count++;// }// }// return count; return [str numberCount];}//int count = [NSString numberCountOfString:@"iowejfjfpwer93438r54"];</span><span style="font-size:12px;"></span>
给系统自带方法添加一个对象方法:
- (int)numberCount{ for(int i = 0 ; i < self.length ; i++) { unichar c = [self characterAtIndx:i]; if( c >= '0' && c <= '9') { count++; } }}//[@"idoueiwoeur904r903" numberCount];@end
二.类的本质
利用Person这个类创建了两个Person类型的实例对象
类本身也是一个对象,是个Class类型的对象,简称类对象
获取类对象 每个类对象都相同
Class c = [p calss];
Class c2 = [p2 calss];
Class c3 = [Person calss];
上述三个是相同的具有相同内存地址
当程序启动的时候,就会加载一次项目中所有类,类加载完毕后就会调用+load方法,只会调用一次
当程序第一次使用这个类,就会调用当前类的initialize方法(进行初始化)
先加载原始类,再加载分类
先加载父类,再加载子类(先调用父类的+load方法,再调用子类的+load方法)
先初始化父类,再初始化子类(先调用父类的+initialize方法,再调用子类的+initialize方法)
三.description
NSLog执行前调用-description这个对象方法决定了实例对象的输出结果,(+description返回值(NSString*)输出决定类对象的输出结果)
可以重写description这个方法.
不要在description中调用self会引发死循环
四.SEL
SEL只能转成字符串打印(对方法的包装成SEL类型的数据,再根据SEL数据找方法地址,来调用这个方法)耗性能
调用方法
[p test2];
[p performSelector:@seldctor(test2)];
[p test3:@"123"];
[p performSelector:@seldctor(test3:)withObject:@"123"];
把一个字符串转成SEL类型数据
把方法转成字符串
SEL s = NSSeleectorFromString(name);
[p performSelector:s]
每个方法内部都有一个SEL _cmd代表着当前方法
- 黑马程序员一分类,类的本质,description,SEL
- 黑马程序员——OC语言学习——关键字id、构造方法、Category-分类、类的本质、 description方法、 SEL方法
- 黑马程序员_iOS开发之OC之面向对象之id语法、构造方法、@category分类、类本质、description方法和SEL数据类型
- OC特有语法2—分类,类的本质,description,SEL
- OC特有语法2—分类,类的本质,description,SEL
- 黑马程序员IOS-OC语言-类的本质、SEL
- 黑马程序员——OC语言------OC特有语法:分类、description、类对象、SEL
- 黑马程序员——OC核心语法3(分类、SEL、类本质等)
- 黑马程序员-OC语言核心语法(3)(分类、SEL、类本质)
- OC基础-类的本质+description+SEL
- 黑马程序员 _8 OC基础 id description sel的使用
- OC关键字@property、@synthesize和id类型、构造方法、分类categary、类的本质、description方法、SEL消息机制
- 09.黑马程序员-分类、类的本质
- 黑马程序员--Object-C--05--id、构造方法、类的深入研究、description、SEL
- 黑马程序员07--Object-C--05--id、构造方法、类的深入研究、description、SEL
- 10.黑马程序员-description方法、SEL
- 黑马程序员-description,NSLog补充以及SEL
- 黑马程序员----objective-C description NSLog SEL
- 软件项目质量管理
- UVa 1584 - Circular Sequence
- LeakTracer-内存泄露检测工具
- opencv中实现滚动条随着视频播放移动
- Servlet生命周期与工作原理
- 黑马程序员一分类,类的本质,description,SEL
- jpa multi datasource
- Linux查看内存使用量和交换区使用量
- 作用域生命周期
- CSS鼠标滑过改变样式颜色
- 操作系统进程线程总结
- poj 2762 Going from u to v or from v to u?
- 关于Maven仓库的本地位置配置
- 处理hash冲突的常见办法