5.20 便利构造器深入

总结:
1,property属性的申明 变量名按照编程规范需要 tab两次
2,交叉引用的方法:比如:在UIColor.h中添加引用的交叉对象@class UITextColor;然后在UIColor.m文件中引入#import “UITextColor.h” //交叉引用,需要在.m中再次导入;UITextColor.h中引入#import “UIColor.h”,主函数调用这两个文件“#import “UIColor.h”“
“#import “UITextColor.h””
3,NSDate的使用

NSDate *date = [NSDate date];
    NSLog(@"");
    NSDateFormatter *format = [[NSDateFormatter alloc] init];
    [format setDateFormat:@"yyyy年MM月dd HH:mm:ss"];
    NSString *time = [format stringFromDate:date]; //通过格式化对象转化date
    NSLog(@"%@",time);
    //计算1988年7月15, 2012年4月20日之间有多少天
    NSString *dateString1 = @"1988年7月15日";
    NSString *dateString2 = @"2012年4月20日";

    [format setDateFormat:@"yyyy年MM月dd日"];

    NSDate *date1 = [format dateFromString:dateString1];
    NSDate *date2 = [format dateFromString:dateString2];
    //转化成标准时间
    NSString *time1 = [format stringFromDate:date1];
    NSString *time2 = [format stringFromDate:date2];
    NSLog(@"%@ %@",time1,time2);

    NSTimeInterval count = [date2 timeIntervalSinceDate:date1];
    int countOfDays = count/3600/24/365;
    NSLog(@"相差%d年",countOfDays);

4, compare 的使用(NSstring类中的方法)

    NSString *string1 = @"abc";
    NSString *string2 = @"abcd";
    NSComparisonResult result = [string1 compare:string2]; //升 1 降 1 一样 0
//  UIColor.h
//  class_补充(便利构造器)_5.20
//
//  Created by rimi on 15/5/20.
//  Copyright (c) 2015年 rectinajh. All rights reserved.
//

#import <Foundation/Foundation.h>
@class UITextColor;

@interface UIColor : NSObject
@property (strong, nonatomic)NSString       *colorString; //两个tab间隔
@property (strong,nonatomic)UITextColor     *color;

//instancetype只能在便利构造和init方法中出现
+ (instancetype)color;


- (instancetype)initWithString:(NSString *)colorString;

@end
//  UIColor.m
//  class_补充(便利构造器)_5.20
//
//  Created by rimi on 15/5/20.
//  Copyright (c) 2015年 rectinajh. All rights reserved.
//

#import "UIColor.h"
#import "UITextColor.h" //交叉引用,需要在.m中再次导入

@implementation UIColor

//快速创建,传递给子类使用
+ (instancetype)color
{
    //UIColor *color = [[UIColor alloc]init];UIColor * ->ID
    UIColor *color = [[self alloc]init];//考虑子类,self 保证既能被我自己用,也能被我子类用
    return color;
}
//带参初始化
- (instancetype)initWithString:(NSString *)colorString
{
    //@"#fffff"rgb颜色提取
    self = [super init]; //所有对self的方法,不能用init开头
    self.colorString = colorString;
    return self;

}

//便利构造方法,通过3个nsinteger的整数(red,green,blue)初始化颜色
+ (instancetype)initWithRed:(NSInteger)red
                    Green:(NSInteger)green
                       Blue:(NSInteger)blue
{
    UIColor *color = [self init]; //self = alloc init
    //通过三个颜色,算出颜色

    //red green blue / 255.0
    return color;
}
@end
//  UITextColor.h
//  class_补充(便利构造器)_5.20
//
//  Created by rimi on 15/5/20.
//  Copyright (c) 2015年 rectinajh. All rights reserved.
//

#import "UIColor.h"

@interface UITextColor : UIColor

@end
//  UITextColor.m
//  class_补充(便利构造器)_5.20
//
//  Created by rimi on 15/5/20.
//  Copyright (c) 2015年 rectinajh. All rights reserved.
//

#import "UITextColor.h"
#import "UIColor.h"

@implementation UITextColor

@end
  main.m
//  class_补充(便利构造器)_5.20
//
//  Created by rimi on 15/5/20.
//  Copyright (c) 2015年 rectinajh. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "UIColor.h"
#import "UITextColor.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        //带参初始化  alloc + initwith... 对象已经创建

        //便利构造,简化创建对象的过程
        UIColor *color = [UIColor color];
        //1,无参便利构造方法,用于可变对象快速构造
        NSMutableString *string = [NSMutableString string];
        //2,用于子类对象初始化
        //UIView UIResponder
        UITextColor *textColor = [UITextColor color];
        NSLog(@"%@",textColor);

        //.1,交叉引用 两个类之间,互相引用, 出现互相死循环 a->c->b b->a,避免出现循环
        //OC中不支持重复导入同一个文件
        //在UIColor.h中添加@class UITextColor;//专门用来断开交叉引用,但是没有具体类的功能,然后uicolor.m 中 添加#import "UITextColor.h" 交叉引用,需要在.m中再次导入

        //2. compare (NSstring类中的方法)
        NSString *string1 = @"abc";
        NSString *string2 = @"abcd";
        NSComparisonResult result = [string1 compare:string2]; //升 1 降 1 一样 0
        NSLog(@"%ld",result);

        //3,NSDate
        NSDate *date = [NSDate date];
        NSLog(@"");
        NSDateFormatter *format = [[NSDateFormatter alloc] init];
        [format setDateFormat:@"yyyy年MM月dd HH:mm:ss"];
        NSString *time = [format stringFromDate:date]; //通过格式化对象转化date
        NSLog(@"%@",time);

        //计算1988年7月15, 2012年4月20日之间有多少天
        NSString *dateString1 = @"1988年7月15日";
        NSString *dateString2 = @"2012年4月20日";

        [format setDateFormat:@"yyyy年MM月dd日"];

        NSDate *date1 = [format dateFromString:dateString1];
        NSDate *date2 = [format dateFromString:dateString2];
        //转化成标准时间
        NSString *time1 = [format stringFromDate:date1];
        NSString *time2 = [format stringFromDate:date2];
        NSLog(@"%@ %@",time1,time2);


        NSTimeInterval count = [date2 timeIntervalSinceDate:date1];
        int countOfDays = count/3600/24/365;
        NSLog(@"相差%d年",countOfDays);

        //NSvalue 值 继承与NSNumber,主要用在动画部分,NSvalue点point








        //用什么方法接返回值
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值