类的扩展

//1.类目 Category

//命名 : @interface 要扩展的类名 (类目名) ~~ @end

//特点 :  1.不可定义成员变量,而且一般不定义属性

@interface NSString (SayBaby)

-(void)sayHello;

-(NSString *)reverse;

-(NSString *)substringFromIndex:(NSUInteger)from;

@end


另外,虽然Category不能够为类添加新的成员变量,但是Category包含类的所有成员变量,即使是@private的。Category可以重新定义新方法,也可以override继承过来的方法  

--------------------

到NSString+SayBaby.m中去实现方法

#import "NSString+SayBaby.h"


@implementation NSString (SayBaby)


-(void)dealloc{

    [super dealloc];

}

-(id)init{

    self = [super init];

    if (self) {

        

    }

    return self;

}

-(NSString *)substringFromIndex:(NSUInteger)from{

    NSLog(@"%s",__func__);

    return @"ok";

}

-(void)sayHello{

    NSLog(@"%s",__func__);//打印出方法名

    NSLog(@"self = %@",self);

 }

_________________________________________________________

//2.延展 Extension

//命名 : 写在.m文件里 @interface 类名 () ~~ @end

//特点 : 1.添加类的私有属性和方法;


#import "Gril.h"

//延展(Extension):添加私有方法与成员变量,属性

//延展的括号中没有内容,如果添加内容,即类目

@interface Gril ()

{

    NSInteger _age;

}

@property(nonatomic,assign)NSInteger age;

-(void)doNotAskAge;

@end


@implementation Gril

-(void)dealloc{

    [_name release];

    [_sex release];

    [super dealloc];

}

-(id)init{

    self = [super init];

    if (self) {

        self.age = 18;

        [self doNotAskAge];

    }

    return self;

}

-(void)doNotAskAge{

    NSLog(@"不要问");

}

@end


--------

#import <Foundation/Foundation.h>


@interface Gril : NSObject

@property(nonatomic,retain)NSString *name;

@property(nonatomic,retain)NSString *sex;

@end

____________________________________________________________

//3.协议 Protocol:实现类与类之间的通信

//命名 : @protocol 协议名 <NSObject> ~~ @end

//      @required 不写是默认的,必须实现 @optional 可实现可不实现

//特点 : 1.只声明,不实现

//      2.为了解决多继承问题

//      3.@property (nonatomic, assign) id<协议名> delegate;

//       为啥用assign 为了防止循环拥有释放不了





    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值