自学iOS开发系列----OC(类别和扩展)

来源:互联网 发布:双代号网络计划规则 编辑:程序博客网 时间:2024/06/09 21:03

类别(Category)
1.类别的作用:为已知的类型增加新的方法

2.类别的局限性
①不能添加实例变量;
②方法名冲突,类别中方法的优先级会更高

3.类别的应用场景:将类的实现分散到不同的文件或框架中

4.创建Category文件
①command+N
②Objective-C File
Objective-C File
③添加类型和类别名称
File: Printf
File Type: Category
Class: NSString
Printf

5.新建类别,在一个字符串后面追加一个字符串,返回一个新的字符串
新建NSString+Print类别

①NSString+Print.h

#import <Foundation/Foundation.h>@interface NSString (Printf)- (NSString *)appendStringByStrLast:(NSString *)strLast;@end

②NSString+Printf.m

#import "NSString+Printf.h"@implementation NSString (Printf)- (NSString *)appendStringByStrLast:(NSString *)strLast {    //字符串追加    NSString * ret = [NSString stringWithFormat:@"%@%@",self,strLast];    return ret;}@end

③main.m

#import <Foundation/Foundation.h>#import "NSString+Printf.h"int main(int argc, const char * argv[]) {    @autoreleasepool {        NSString * str = @"春风十里,";        NSString * strNew = [str appendStringByStrLast:@"不如你"];        NSLog(@"%@",strNew);    }    return 0;}

扩展(Extension)

1.扩展和类别的区别:扩展既可以为类型增加实例变量,也可以增加方法

2.扩展的作用:将扩展的内容(实例变量,方法)变为私有

3.创建Extension文件
①command+N
②Objective-C File
Objective-C File
③添加类型和扩展名
File: PrivateMethod
File Type: Extension
Class: Student
PrivateMethod

4.创建一个学生类,为学生类添加扩展类
新建Student类
①Student.h

#import <Foundation/Foundation.h>@interface Student : NSObject- (void)sayStudentName;@end

②Student_PrivateMethod.h

#import "Student.h"@interface Student () {    int _age;}- (void)studentName;@end

③Student.m

#import "Student.h"#import "Student_PrivateMethod.h"@implementation Student- (void)sayStudentName {    //扩张变量和方法只能在自己的.m里调用    [self studentName];}- (void)studentName {    _age = 28;    NSLog(@"我叫赵丽颖");}@end

④main.m

#import <Foundation/Foundation.h>#import "Student.h"int main(int argc, const char * argv[]) {    @autoreleasepool {        Student * student = [[Student alloc] init];        [student sayStudentName];    }    return 0;}
0 0
原创粉丝点击