博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
类目 延展
阅读量:6842 次
发布时间:2019-06-26

本文共 1414 字,大约阅读时间需要 4 分钟。

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

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

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

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

    父类中类目,子类可以用关键字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

 

 

转载于:https://www.cnblogs.com/lcl15/p/4919898.html

你可能感兴趣的文章
CefSharp49.0.1 SetZoomLevel
查看>>
利用Python进行数据分析---数据规整化
查看>>
mysql 主从配置
查看>>
JS创建对象的方式有几种
查看>>
ES6 系列之 defineProperty 与 proxy
查看>>
UI Framework-1: views Windowing
查看>>
caffe-ssd使用预训练模型做目标检测
查看>>
Spring MVC 处理模型数据(@ModelAttribute)
查看>>
柴夥說算法(5)--對偶
查看>>
java动态代理(JDK和cglib)
查看>>
设计模式之责任链模式
查看>>
[Android Pro] Android API 23中废弃了HttpClient的解决办法
查看>>
Android webview
查看>>
UML类图关系全面剖析
查看>>
bash:command not found
查看>>
Linq 中的TakeWhile 和 SkipWhile
查看>>
JAVA开发:分享一些SpringMvc+Ibatis+spring的框架使用心得
查看>>
2017-2018-2 20155203《网络对抗技术》Exp6 信息搜集与漏洞扫描
查看>>
js中获取 table节点各tr及td的内容方法
查看>>
大专生自学Python到找到工作的心得
查看>>