类目 延展

     类目:类目可以为一个现有的类扩展新的方法,扩展的方法会成为原始类的一部分

     声明一个类时,有实例变量和方法,而如果事后想增加方法的话直接在类里面添加感觉会显得杂乱无章,如果创建一个子类的话,层级多了会糊涂掉。至此,类目诞生。

    在类目的实现部分不能添加成员变量,类目没有位置容纳实例变量。

    类目中的实现方法可以使用类的属性(成员变量)。

    父类中类目,子类可以用关键字super进行调用。

    类目的方法名不能与类的方法名相同,若相同就会进行复写,类里面的方法就不在调用

 

      延展的作用就是定义自己的私有方法。

     延展就是C语言中的前向申明,如果你想调用一个函数的话,那么在此之前必须要声明一个这个函数

    

 

//类目代码 

#import <Foundation/Foundation.h>

#import "NSString+Email.h"

int main(int argc, const char * argv[]) {

    @autoreleasepool {

        // insert code here...

        NSLog(@"Hello, World!");

        

        NSString *email=@"1234567@qq.com";

        BOOL same=[email emiale];

        if (same==YES) {

            NSLog(@"正确");

        }else{

        

            NSLog(@"不正确");

        }

    }

    return 0;

 

}

 

#import <Foundation/Foundation.h>

 

@interface NSString (Email)

 

-(bool) emiale;

 

 

@end

 

#import "NSString+Email.h"

 

@implementation NSString (Email)

-(bool) emiale

{

    NSRange range=[self rangeOfString:@"@"];

    if (range.location !=NSNotFound) {

        return YES;

    }

    return  NO;

}

 

@end

 

 

//延展

#import <Foundation/Foundation.h>

#import "Person.h"

int main(int argc, const char * argv[]) {

    @autoreleasepool {

        // insert code here...

        NSLog(@"Hello, World!");

        Person *person = [[Person alloc]init];

        [person work];

    

    }

    return 0;

 

}

#import <Foundation/Foundation.h>

 

@interface Person : NSObject

-(void)work;

 

@end

 

 

#import "Person.h"

//延展的定义

//私有的

@interfacePerson( )

-(void)sleep;

@end

@implementation Person

-(void)work{

    NSLog(@"工作");

    [self sleep];

}

//延展的实现

-(void)sleep{

    NSLog(@"睡觉");

}

 

@end

 

 

posted @ 2015-10-29 11:22  风雨彩  阅读(268)  评论(0编辑  收藏  举报