2015-12-04// OC_9 类的扩展

//
// main.m
// OC_9 类的扩展
//
// Created by YIem on 15/12/4.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Gril.h"
#import "NSString+SayHi.h"
#import "Man.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {

   // 创建对象
    Gril *bg = [ Gril grilWithYanzhi:@"漂亮" tui:@"大长腿"];
    // 类中方法
    [bg zipai];
    // 类目方法
    [bg findBoyFriend];
    
    // 创建字符串
    NSString *str = @"随便";
    //调用字符串类目方法
    [str sayHi];
    
    
    /**
     * 类目的作用 扩展
     * 1.给系统的类(没有源代码的类/没有.m文件的类)添加新的方法
     * 2.任何一个类都可以添加类目
     * 3.使用类目名 划分方法种类
     */
/*-----------------<<<<<.0.>>>>>-------------*/
    /**
     * 类目的特点
     * 1.有一对.h和.m文件
     * 2.可以写在类的后面 或者 新建文件(类名 + 类目名)
     * 3.类目中的方法相当于添加在原类中 可以使用任意的成员变量和方法
     * 4.类目在不能添加成员变量 只能添加方法
     * 5.类目在的方法优先级更高 如果和原类方法重名 回覆盖原方法(尽量避免重名)
     **/
    
  // 创建对象
    Man *dawa = [[Man alloc] init];
    [dawa shuangFangLianJie];
    
    
    
    
}
return 0;

}



//
// Gril.h
// OC_9 类的扩展
//
// Created by YIem on 15/12/4.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Gril : NSObject
@property (nonatomic, copy)
NSString *yanzhi;
@property (nonatomic, copy)
NSString *tui;
// 自定义初始化

  • (instancetype)initWithYanzhi:(NSString *)yanzhi
    tui:(NSString *)tui;
    // 遍历构造器
  • (instancetype)grilWithYanzhi:(NSString *)yanzhi
    tui:(NSString *)tui;
    /// 自拍
  • (void)zipai;

@end
// 类目 / 类别/ 分类 Category
// 关键字 类名 (类目名)
@interface Gril (BF)

// 类目中不能添加成员变量 只能添加方法

  • (void)findBoyFriend;
  • (void)zipai;
    @end

//
// Gril.m
// OC_9 类的扩展
//
// Created by YIem on 15/12/4.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

#import "Gril.h"
// 延展/扩展 Extension
// 作用: 私有声明 管理私有的内容
// 关键字 类名 ()
@interface Gril ()
@property (nonatomic, copy)
NSString *name;
// 私有方法 -> 没有在.h声明的方法 称为私有方法
// 私有方法可以在延展中声明,或者不声明
// 如果声明 可以统一管理所有的私有方法

  • (void)prvalateMethod;

@end
@implementation Gril
#pragma mark - dealloc

  • (void)dealloc
    {
    [_yanzhi release];
    [_tui release];
    [super dealloc];
    }
    #pragma mark - 自定义初始化
  • (instancetype)initWithYanzhi:(NSString *)yanzhi tui:(NSString *)tui
    {
    if (self) {
    self = [super init];
    self.yanzhi = yanzhi;
    self.tui = tui;
    }
    return self;
    }
    #pragma mark - 遍历构造器
  • (instancetype)grilWithYanzhi:(NSString *)yanzhi tui:(NSString *)tui
    {
    Gril *p = [[Gril alloc] initWithYanzhi:yanzhi tui:tui];
    return [p autorelease];
    }

#pragma mark - 普通方法

  • (void)zipai
    {
    NSLog(@"自拍");
    }

// 扩展/延展

  • (void)prvalateMethod
    {
    NSLog(@"私有方法");
    }
    @end

// 类目的实现
@implementation Gril (BF)

  • (void)findBoyFriend
    {
    // 类目中可以使用当前类的任意方法和成员变量
    NSLog(@"找男朋友");
    }
    // 类目中方法优先级高于原类方法
    // 当方法重名时 回覆盖原类方法
  • (void)zipai
    {
    NSLog(@"和男朋友自拍");
    }

@end



//
// FruitDelegate.h
// OC_9 类的扩展
//
// Created by YIem on 15/12/4.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

#import <Foundation/Foundation.h>

// 正式协议
// 声明若干个方法(一套标准)
// 关键字 协议名 根协议
@protocol FruitDelegate
// 协议类型修饰
// 必须的 表示必须实现的方法 加required
@required
// 有价值

  • (void)hasVslue;
    // 可选的 可实现可不实现 optional
    @optional
    // 使人愉悦
  • (void)makeSomeoneHappy;
    @end


//
// Liulain.h
// OC_9 类的扩展
//
// Created by YIem on 15/12/4.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "FruitDelegate.h"
// 签订协议 -> 具有了协议中的方法的声明
@interface Liulain : NSObject

@end


//
// Liulain.m
// OC_9 类的扩展
//
// Created by YIem on 15/12/4.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

#import "Liulain.h"

@implementation Liulain

  • (void)hasVslue
    {
    NSLog(@"有价值");
    }
    @end


//
// Money.h
// OC_9 类的扩展
//
// Created by YIem on 15/12/4.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "FruitDelegate.h"
@interface Money : NSObject

@end


//
// Money.m
// OC_9 类的扩展
//
// Created by YIem on 15/12/4.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

#import "Money.h"

@implementation Money

  • (void)hasVslue
    {
    NSLog(@"钱钱钱");
    }
  • (void)makeSomeoneHappy
    {
    NSLog(@"买买买");
    }
    @end


//
// Man.h
// OC_9 类的扩展
//
// Created by YIem on 15/12/4.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

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

#warning 代理模式4. 签订协议
@interface Man : NSObject

  • (void)shuangFangLianJie;
    @end

//
// Man.m
// OC_9 类的扩展
//
// Created by YIem on 15/12/4.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

#import "Man.h"

@implementation Man

  • (void)shuangFangLianJie
    {
    Woman *shejing = [[Woman alloc] init];
    #warning 代理模式5. 设置代理人
    shejing.delegate = self;
    [shejing buybuybuy];
    }
    #warning 代理模式6. 实现协议中声明的方法
  • (void)makeMoney
    {
    NSLog(@"卖肾");
    }
    @end


//
// Woman.h
// OC_9 类的扩展
//
// Created by YIem on 15/12/4.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

#import <Foundation/Foundation.h>
#warning 代理模式1. 声明协议
// 非正式协议
@protocol MarriageDelegate
// 必须
@required
// 挣钱

  • (void)makeMoney;
  • (void)mustBeHuluwa;
  • (void)mustHasGrandPa;
  • (void)mustBeBigBrother;
    // 加分项
    @optional
  • (void)touShangYouDianLv;
  • (void)geBiYouLaoWang;

@end

@interface Woman : NSObject
#warning 代理模式2. 设置代理人属性
// 给签订协议的对象 设置一个角色 未婚夫
@property (nonatomic, assign) id delegate;

  • (void)buybuybuy;
    @end

//
// Woman.m
// OC_9 类的扩展
//
// Created by YIem on 15/12/4.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

#import "Woman.h"

@implementation Woman
-(void)buybuybuy
{
#warning 代理模式3. 让代理人调用协议方法
// 让未婚夫挣钱 自己买买买
[self.delegate makeMoney];
NSLog(@"买买买");
}
@end



//
// NSString+SayHi.h
// OC_9 类的扩展
//
// Created by YIem on 15/12/4.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface NSString (SayHi)

  • (void)sayHi;

@end


//
// NSString+SayHi.m
// OC_9 类的扩展
//
// Created by YIem on 15/12/4.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

#import "NSString+SayHi.h"

@implementation NSString (SayHi)

  • (void)sayHi
    {
    NSLog(@"Hello, World");
    }
    @end

标签: ios, ios开发, objective-c, objective

添加新评论

Title - Artist
0:00