黑马程序员-oc-分类(Q)
来源:互联网 发布:js中get post 区别 编辑:程序博客网 时间:2024/06/06 20:52
------- android培训、java培训、期待与您交流! ----------
1,类别作用
在不修改原油的类的基础上增加新的方法
一个庞大的类可以分模块开发
一个庞大的类可以由多个人来编写,更有利于团队合作。
2,使用类别的目的:
1) 对现有类进行扩张:比如,你在类别中增加的方法会被子类所继承,在运行时跟其他的方法没由区别
2) 作为子类的替代手段,不需要定义和使用一个子类,你可以通过类别直接向已有的类里增加方法
3) 对象中的方法归类,利用category把一个庞大的类划分成小块来分别进行开发,从而更好的对类中的方法进行更新和维护
3,声明和实现一个类别
Person+Job.h
@interface Person (Job)-(void)dancer;@endPerson+Job.m
@implementation Person (Job)-(void)dancer{ NSLog(@"dancer");}@endQ:我看到老师的讲义上job是小写,不知道为什么不用大写?
A:等我看视频,看老师有没有回答大写小写,然后才能回答
注:a,不可以在类别里增加成员变量,但可以访问原来类中的成员变量
b,如果分类和原来的类出现重名的方法,优先调用分类中的方法,原来的方法会被忽略。
Q:为什么优先调用分类中的方法?
A:
c当多个分类中有同名方法,则执行最后编译的文件方法
Q:同名时调用最后编译的文件方法,是因为在代码区中最后编译的方法能够被优先找到吗?(像栈一样,先进后出的结构)
A:
Category 的非正式协议
非正式协议就是给NSObject类创建类目(分类)又叫做非正式协议,非正式协议一般不需要进行实现,一般在子类中进行方法重写。
统计一个字符串中阿拉伯数字的个数
NSString+count.h文件
#import <Foundation/Foundation.h>@interface NSString (count)-(int)countNum;@endNSString+count.m文件
#import "NSString+count.h"@implementation NSString (count)-(int)countNum{ int count = 0; for(int i=0;i<self.length;i++){ unichar c = [self characterAtIndex:i]; if(c>='0'&& c<='9'){ count++; } } NSLog(@"count =%d",count); return count; }@end
main文件
#import "NSString+count.h"@implementation NSString (count)-(int)countNum{ int count = 0; for(int i=0;i<self.length;i++){ unichar c = [self characterAtIndex:i]; if(c>='0'&& c<='9'){ count++; } } NSLog(@"count =%d",count); return count; }@end
分类延展
延展类别又称为扩展,Extension 是Category的一个特例,其名字为空(匿名),并且新增加的方法一定要实现
目的:通过延展来实现方法的私有,延展的头文件独立。
方法私有:
1)在扩张中声明,在.m中实现(此非完全私有,因为如果引用扩展的头文件,对象依旧可以调用扩展里的方法)
2)在.m中实现声明和方法
3)在.m中直接实现方法而不在@interface里声明
------- android培训、java培训、期待与您交流! ----------
- 黑马程序员-oc-分类(Q)
- 黑马程序员-oc内存管理(Q)
- 黑马程序员--oc分类
- 黑马程序员--OC--分类
- 黑马程序员-OC语言核心语法(3)(分类、SEL、类本质)
- 黑马程序员---OC分类-category
- 黑马程序员-oc-Block
- 【黑马程序员】OC-分类(Category)及延展(Extendsion)
- [黑马程序员][OC]分类(Category)的使用
- 黑马程序员-oc中分类的使用
- 黑马程序员IOS-OC语言-分类、协议
- 黑马程序员 oc随机 分类与延展
- 黑马程序员----oc加强笔记----分类(Gategory)
- 黑马程序员——OC中的分类
- 黑马程序员---OC category
- 黑马程序员---OC封装
- 黑马程序员---OC Category
- 黑马程序员---OC autorelease
- 常用传感器协议6:中立格林VOC传感器
- BUG与异常小结
- uva 10652 - Board Wrapping(凸包)
- ssh常见错误
- 解决XCODE配置LLVM环境出现的问题
- 黑马程序员-oc-分类(Q)
- 实习的三个月
- OC中常用方法及概念
- codeforces 352C Jeff and Rounding 很有趣的一道题
- latex equation displaystyle or textstyle
- 循环链表的特性以及判断单链表是否有环(九)
- 【LeetCode】(67)Add Binary (Easy)
- 动态链接详解
- poj 3278 Catch That Cow