iOS OC07.2_类的扩展

类目

//1.系统已经写好的类目:按照功能对系统的类方法进行区分
    //[email protected]开始,后面是当前类的名字,类名后面是分类的功能,到@end结束
    //2.我们创建的类目,一般是为了把系统的类进行功能扩充
//    NSString *[email protected]"2015-07-12 10:00:00";
//    NSString *[email protected]"2015-07-12 09:00:00";
////    [str sayHi];
//
////    BOOL isTrue=[str2 isEqualTwoDate:str];
//
//
//    if ([str2 isEqualToString:str]) {
//        NSLog(@"月份相同");
//    }else{
//        NSLog(@"月份不同");
//    }
//
//
//    NSString *newTime=[str appendTwoDate: str2];
//    NSLog(@"%@",newTime);
//
//    NSDate *date=[str stringToDate];
//    NSLog(@"%@",date);
//
//    NSDate *date1=[NSString stringToDate:str];
//    NSLog(@"%@",date1);

NSString+StringMethod.h

//
//  NSString+StringMethod.h
//  OC07_类的扩展
//
//  Created by dllo on 15/7/24.
//  Copyright (c) 2015年 zhozhicheng. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface NSString (StringMethod)
-(void)sayHi;

//输入两个日期,判断两个日期是否在同一个月
-(BOOL)isEqualTwoDate:(NSString *)otherDate;
//拼接日期
-(NSString *)appendTwoDate:(NSString *)otherDate;
//给定两个时间,判断时间是否在这两个区间内

-(BOOL)isInTimeZone:(NSString *)beginTime
                end:(NSString *)endTime;
-(NSDate *)stringToDate;

+(NSDate *)stringToDate:(NSString *)dateStr;

@end

“NSString+StringMethod.h”

//
//  NSString+StringMethod.m
//  OC07_类的扩展
//
//  Created by dllo on 15/7/24.
//  Copyright (c) 2015年 zhozhicheng. All rights reserved.
//

#import "NSString+StringMethod.h"

@implementation NSString (StringMethod)
-(void)sayHi
{
    NSLog(@"你好");
}

-(BOOL)isEqualTwoDate:(NSString *)otherDate{
    //这个方法需要两个参数,第一个参数就是方法的调用者,谁调用了这个方法,那么在这个方法的内部,self就是使用方法的那个对象
//    NSLog(@"%@",self);
    //进行截取
    NSRange range={5,2};
    NSString *str1=[self substringWithRange:range];
    NSString *str2= [otherDate substringWithRange:range];
    return [str1 isEqualToString:str2];

}

-(NSString *)appendTwoDate:(NSString *)otherDate{
    NSString *endTime=[otherDate substringFromIndex:10];
    return [self stringByAppendingString:endTime];
}

-(BOOL)isInTimeZone:(NSString *)beginTime
                end:(NSString *)endTime{
    return YES;
}
    //传过去一个字符串,返回一个时间的对象NSDate类型
-(NSDate *)stringToDate{
    //设置格式
    NSDateFormatter *formatter=[[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
    return [formatter dateFromString:self];
}

+(NSDate *)stringToDate:(NSString *)dateStr{
    NSDateFormatter *formatter=[[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
    return [formatter dateFromString:dateStr];

}
@end

延展

Girl.h(1)

//
//  Girl.h
//  OC07_类的扩展
//
//  Created by dllo on 15/7/24.
//  Copyright (c) 2015年 zhozhicheng. All rights reserved.
//

#import <Foundation/Foundation.h>

// 1.声明一份协议
// @protocol 协议的关键词
@protocol Marry <NSObject>
// 协议的内容
// 协议方法的声明
// required是必须实现的方法,默认是必须实现的方法
// optional是可选择执行的方法
@required
-(void)makeMoney;

@optional
-(void)cook;

@end

@interface Girl : NSObject
// 2.设置代理人的属性
@property(nonatomic,assign)id<Marry>delegate;

// 两个人结婚之后,协议才正式生效
-(void)getMarry;

@end

Girl.m(2)(3)

//
//  Girl.m
//  OC07_类的扩展
//
//  Created by dllo on 15/7/24.
//  Copyright (c) 2015年 zhozhicheng. All rights reserved.
//

#import "Girl.h"

@implementation Girl

-(void)getMarry {
    // 3.让代理人去执行协议里的方法
    [self.delegate makeMoney];
}

@end

Boy.h(4)

//
//  Boy.h
//  OC07_类的扩展
//
//  Created by dllo on 15/7/24.
//  Copyright (c) 2015年 zhozhicheng. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Girl.h"

// 4.引完头文件之后,BOY需要签订协议

@interface Boy : NSObject<Marry>

@end

main.m(5)

//创建两个小人
//    Boy *yadang=[[Boy alloc] init];
//    Girl *xiawa=[[Girl alloc] init];
//    //5.设置代理人
//    xiawa.delegate = yadang;
//    // 通过调用结婚的方法,来执行内部协议的方法
//    [xiawa getMarry];

Boy.m(6)

//
//  Boy.m
//  OC07_类的扩展
//
//  Created by dllo on 15/7/24.
//  Copyright (c) 2015年 zhozhicheng. All rights reserved.
//

#import "Boy.h"

@implementation Boy

//6.实现协议方法makeMarry
-(void)makeMoney{
    NSLog(@"买买买");
}

@end

设置新代理人

Man.h

//
//  Man.h
//  OC07_类的扩展
//
//  Created by dllo on 15/7/24.
//  Copyright (c) 2015年 zhozhicheng. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Girl.h"
// 签订协议
@interface Man : NSObject<Marry>

@end

Man.m

//
//  Man.m
//  OC07_类的扩展
//
//  Created by dllo on 15/7/24.
//  Copyright (c) 2015年 zhozhicheng. All rights reserved.
//

#import "Man.h"

@implementation Man

-(void)makeMoney{
    NSLog(@"花花花");
}
@end

main.m

Man *wangliqian=[[Man alloc] init];
//    //设置代理人
//    xiawa.delegate=wangliqian;
//    [xiawa getMarry];

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-14 05:47:23

iOS OC07.2_类的扩展的相关文章

类的扩展--类目--ios

person+money.h  这是类目类 #import "Person.h" //这是扩展person类的接口类,独立一个文件 @interface Person (Money) -(void) haveMoney; @end person+money.m 这是类目类 #import "Person+Money.h" //这是扩展person类的实现类,独立一个文件 @implementation Person (Money) -(void) haveMoney

ios 中Category类别(扩展类)专题总结

原创地址   http://www.code4blog.com/archives/294 类别 类别是一种为现有的类添加新方法的方式. 利用Objective-C的动态运行时分配机制,可以为现有的类添加新方法,这种为现有的类添加新方法的方式称为类别catagory,他可以为任何类添加新的方法,包括那些没有源代码的类. 类别使得无需创建对象类的子类就能完成同样的工作 一.创建类别 1.声明类别 声明类别与声明类的形式很相似 @interface  NSString(NumberConvenienc

ios开发类的扩展

类扩展常见方法:定义子类.遵循协议.使用分类.源文件拓展. 源文件拓展:语法:在声明@implementation前添加 @interface 类名() .... @end 分类Category 向现有类中添加方法时添加子类不方便 分类是对现有类的扩展,分类只扩展方法,不扩展属性 协议Protoccol 可以用来声明一大堆方法 只要某个类遵循了这个协议,就相当于拥有了这个协议中的所有方法声明

iOS 8新特性之扩展(Extension)

本文由海水的味道收集整理,欢迎转载 当前版本 0.0.1  iOS 8新特性之扩展 一.扩展概述 扩展(Extension)是iOS 8中引入的一个非常重要的新特性.扩展让app之间的数据交互成为可能.用户可以在app中使用其他应用提供的功能,而无需离开当前的应用. 在iOS 8系统之前,每一个app在物理上都是彼此独立的,app之间不能互访彼此的私有数据. 而在引入扩展之后,其他app可以与扩展进行数据交换.基于安全和性能的考虑,每一个扩展运行在一个单独的进程中,它拥有自己的bundle, b

通讯聚合类Chrome 扩展:All-in-One Messenger,把主流聊天服务聚合在一个应用窗口内

原文地址:http://whosmall.com/?post=420 本文标签: Chrome扩展 Chrome浏览器 通讯聚合类Chrome扩展 All-in-One-Messenger 主流聊天服务聚合 我发现了 All-in-One Messenger,它是一款轻量的 Chrome 扩展,作用与 Franz基本相同,只需要打开一个窗口,所有的通讯服务会以网页标签栏的形式呈现,方便你自如切换,可以大大提高了沟通的效率.但是和「庞大」的 Franz 相比,All-in-One Messenge

ASP.Net string 类的扩展方法 [转]

string 类的扩展方法列表(基本相同于 IEnumerable<T> 接口的成员列表): Aggregate<>     //累加 All<>        //是否都满足条件 Any<>        //是否有一个满足条件 AsEnumerable<>  // AsParallel<>    // AsQueryable<>    // Average<>      //平均值 Cast<>

IOS上传图片方法类

IOS上传图片方法类 iPhone开发中遇到上传图片问题,找到多资料,最终封装了一个类,请大家指点,代码如下 // // RequestPostUploadHelper.h // demodes // // Created by 张浩 on 13-5-8. // Copyright (c) 2013年 张浩. All rights reserved. // #import <Foundation/Foundation.h> @interface RequestPostUploadHelper

JavaScript学习总结(十四)——JavaScript编写类的扩展方法

在?J?a?v?a?S?c?r?i?p?t?中?可以使?用?类的p?r?o?t?o?t?y?p?e属性来?扩?展?类的属?性?和?方?法,在实际开发当中,当JavaScript内置的那些类所提供的动态方法和动态属性不满足我们实际开发时,我们就可以通过"prototype"属性给自定义类添加方法和属性或者扩展原有的类中的方法和属性. 一.扩展JavaScript内置类,添加动态方法 语法格式: 类名.prototype.方法名 = function([param1],[param2],.

Java程序员的JavaScript学习笔记(10—— jQuery-在“类”层面扩展)

计划按如下顺序完成这篇笔记: 1.    理念. 2.    属性复制和继承. 3.    this/call/apply. 4.    闭包/getter/setter. 5.    prototype. 6.    面向对象模拟. 7.    jQuery基本机制. 8.    jQuery选择器. 9.    jQuery工具方法. 10.    jQuery-在"类"层面扩展. 11.    jQuery-在"对象"层面扩展. 12.    jQuery-扩