OC基础--分类(category) 和 协议(protocol)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OC基础--分类(category) 和 协议(protocol)相关的知识,希望对你有一定的参考价值。
OC 中的category分类文件相当于 C#中的部分类;OC 中的protocol协议文件(本质是头文件)相当于 C#中的接口。今天就简单说明一下OC中的这两个文件。
由于视频中的Xcode版本低,导致了分类文件和协议文件没有找到,最后百度得知:
如图:Xcode 7.2版本中的category文件和protocol文件都归类到了Objective-C File 中
一、category文件:
作用:可以扩展自定义类,或者系统类。下面的实例,是扩展了NSString 类,在类中扩展了计算字符串中数字个数的方法:
NSString类的分类的头文件
1 #import <Foundation/Foundation.h> 2 3 @interface NSString (Number) 4 5 // 计算字符串中阿拉伯数字的个数 6 - (int) numberCount; 7 8 @end
NSString类的分类的.m文件
1 #import "NSString+Number.h" 2 3 @implementation NSString (Number) 4 5 // @"abc123" 6 - (int)numberCount 7 { 8 9 //[self length]; 10 11 int count = 0; 12 13 int len = (int) self.length; 14 15 for (int i = 0; i<len; i++) { 16 // 获取i位置对应的字符(char) 17 char c = [self characterAtIndex:i]; 18 19 if (c>=‘0‘ && c<=‘9‘) 20 { 21 count++; 22 } 23 } 24 25 return count; 26 } 27 28 @end
main文件:
1 #import <Foundation/Foundation.h> 2 #import "NSString+Number.h" 3 4 int main(int argc, const char * argv[]) 5 { 6 7 @autoreleasepool { 8 9 NSString *str = @"abc 123fdsf090900sdfds68768867"; 10 11 int count = [str numberCount]; 12 13 NSLog(@"%d", count); 14 } 15 return 0; 16 }
二、protocol文件
作用:声明一系列方法
注意点:分类和协议都只能声明方法,不能声明成员变量
实例:
1 // 声明一系列方法 2 // 分类和协议都只能声明方法,不能声明成员变量 3 @protocol MyProtocol 4 5 // 默认是@required 6 - (void) test4; 7 8 @required // test1必须实现的 9 - (void) test1; 10 11 @optional // test2、test3是可选实现的 12 - (void) test2; 13 - (void) test3; 14 15 @end
以上是关于OC基础--分类(category) 和 协议(protocol)的主要内容,如果未能解决你的问题,请参考以下文章