OC - ExtensionAndCategory
2015-08-14 20:04
405 查看
<main.m>
<Student.h>
<Student.m>
<NSDate+Change.h>
<NSDate+Change.m>
<NSString+SayHi.h>
<NSString+SayHi.m>
#import <Foundation/Foundation.h> #import "NSString+SayHi.h" #import "NSDate+Change.h" #import "Student.h" int main(int argc, const char * argv[]) { @autoreleasepool { //------------------------ NSString+SayHi --------------------------- //创建字符串对象 NSString *str = @"aa"; [str sayHi]; //创建可变数组 NSMutableArray *arr = [NSMutableArray arrayWithObjects:@"aa",@"dd",@"cc",@"bb",@"ee", nil]; //排序 NSLog(@"升序排列"); [arr sortUsingSelector:@selector(compare:)]; NSLog(@"%@",arr); NSLog(@"降序排列"); [arr sortUsingSelector:@selector(downCompare:)]; NSLog(@"%@",arr); //------------------------ NSDate+Change --------------------------- NSDate *date = [NSDate dateWithDateString:@"20140402142850"]; NSLog(@"%@",date); //假如把上述方法变为"-"开头的方法,则在 main 中需要创建对象去调用.因为在方法中,类方法不用创建对象去调用,可以直接调用,所以更加方便.所以在写的方法中用不到对象时,一般用类方法. //------------------------ Student --------------------------- //创建学生对象 Student *stu1 = [[Student alloc]initWithName:@"zhangsan" sex:@"male" age:18]; } return 0; }
<Student.h>
#import <Foundation/Foundation.h> @interface Student : NSObject { NSString *_name; NSString *_sex; NSInteger _age; } -(id)initWithName:(NSString *)name sex:(NSString *)sex age:(NSInteger)age; @end
<Student.m>
#import "Student.h" //Extension 延展 //为有源代码的类添加 私有的方法 私有的实例变量 //以 @interface 开头 + 类名(当前类名) + () ,以 @end 结尾 //中间写的是私有方法的声明,以便于我们去管理 //当出不来@interface的提示时,在这里敲两三个回车就可以出来了 @interface Student () //私有实例变量声明 { NSString *_aaaaa; } //私有方法声明 -(void)sayHi; @end @implementation Student -(id)initWithName:(NSString *)name sex:(NSString *)sex age:(NSInteger)age { if ([super init]) { _name = name; _sex = sex; _age = age; [self sayHi]; }return self; } -(void)sayHi { NSLog(@"name %@,sex %@,age %ld",_name,_sex,_age); } @end
<NSDate+Change.h>
#import <Foundation/Foundation.h> @interface NSDate (Change) +(NSDate *)dateWithDateString:(NSString *)dateString; @end
<NSDate+Change.m>
#import "NSDate+Change.h" @implementation NSDate (Change) +(NSDate *)dateWithDateString:(NSString *)dateString { //1.创建日期格式类对象 NSDateFormatter *formatter = [[NSDateFormatter alloc ] init ]; //2.定义格式串 [formatter setDateFormat:@"yyyyMMddHHmmss"]; //3.转化 NSDate *date = [formatter dateFromString:dateString]; return date; } //假如把上述方法变为"-"开头的方法,则在 main 中需要创建对象去调用.因为在方法中,类方法不用创建对象去调用,可以直接调用,所以更加方便.所以在写的方法中用不到对象时,一般用类方法. @end
<NSString+SayHi.h>
#import <Foundation/Foundation.h> //Category //为没有源代码的类扩充方法!!!!!不能扩充实例变量,只能添加方法 //以@interface 开头 + 类名(为哪个类添加) + (分类名) //如果添加完方法,那么相当于原来的类就拥有该方法 @interface NSString (SayHi) -(void)sayHi; //降序比较方法 -(NSComparisonResult)downCompare:(NSString *)anotherString; @end
<NSString+SayHi.m>
#import "NSString+SayHi.h" @implementation NSString (SayHi) -(void)sayHi { NSLog(@"我为 NSString 写了一个新方法"); } //降序比较方法 -(NSComparisonResult)downCompare:(NSString *)anotherString { return -[self compare:anotherString]; } @end
相关文章推荐
- 谷歌三大核心技术(一)Google File System中文版
- django重定向
- django通过url传递参数(编辑操作页面)
- django提交post请求
- django1.8模板位置的设置setting.py
- django创建工程,用命令
- 算法基础:田忌赛马问题(Golang实现)
- django-celery动态添加定时任务
- Lingo超经典案例大全
- google test
- Gonet2 游戏服务器框架解析之gRPC入门(4)
- Yandex.Algorithm Online Round 3 Sunday, June 15, 2014
- POJ 3274 Gold Balanced Lineup
- 每日一题(4)——动态规划《Introduction to Algorithms》总结篇
- Django Models的数据类型 汇总
- HDU 3820 Golden Eggs( 最小割 奇特建图)经典
- Go语言阅读小笔记,来自知呼达达关于unsafe.Pointer的分享.
- 天天有人说电信欢go与联通合并,然并卵
- Codeforces 570 B. Simple Game ( 概率 )
- EGO Refresh小总结