您的位置:首页 > 编程语言 > Go语言

01 类目Category、延展Extension、协议Protocol、计数器的使用NSTimer

2016-07-20 01:02 274 查看
一、类目Category

*怎样为类添加一个方法:
修改源代码
编写此类的子类
*OC中常见的扩展方式:
类目Category、延展Extension、协议Protocol
1、介绍:
类目可以为一个现有的类添加新的方法
类目与原类同级,是原始类的一部分,方法也同级
类的类目新增的方法可以它的子类继承
2、注意事项
类目中只能写方法,不能添加成员变量
同一个类可以添加多个类目,但不能重名
可以覆写现有类的方法,原方法不能被调用
3、类目的创建
command + N  >>  OS X 中 Objective-C File  >>  File Type 选择 类目Category。
4、多重类目
多重类目不要重写一个方法,如果重写了同一个方法,那么系统只调用重写后 方便调用的那个方法。
5、类目中方法的创建,和类中一样。只是没有实例变量(属性)

二、延展Extension

*、介绍
在类的实现文件中定义的类目,叫做延展
延展是匿名的类目,定义“私有”的方法
@interface  延展名 ()       //小括号里可写可不写
@end
主要用来介绍 当前文件内哪些是闭源的 (闭源就是不访问,“私有的”,只有实现没有声明的)
写在
.m
文件中,需要遵循 OC
书写规则。而 单独创建的的延展.h文件
没有语法检查

三、协议Protocol

1、概述
协议声明了可被其他的类实现的方法
协议不是类,只是一个其他类实现的接口
2、协议的创建与签订
@protocol 协议名    <必须遵守的协议>       ————(协议名称必须唯一)
@protocol Protocol <NSObject>      
@required  (默认类型)   放在方法声明前面,用来修饰必须实现的方法 。
@optional   可以选择实现的方法
@end   (结束)
3、协议的采用: 必须将协议的头文件 导入需要实现方法的目标类的头文件内,并<留名> 签订
Tiger 采用 ZooRule协议
#import"ZooRule.h"
@interface Tiger :NSObject <ZooRule>   //签订协议<协议名>

假如Tiger类 要同时采用两个协议
@interface Tiger :NSObject <ZooRule,ManagerRule>

在协议中声明的方法,在类的 .h文件中就没必要再声明了。
在实现文件文件中用 下列标记,方便程序的阅读与修改
加注释方法:
#pragma mark -协议中@required
#pragma mark -协议中@optional

     
3、协议的作用
协议写有达到某种功能所有需要的方法,而每个类可能只需要实现其中少数的几条方法。只有全部实现才能获得一系列的有用功能
4、协议和数据类型
你可以在使用的数据类型中为实例变量和方法参数指定协议名称;
如:id 类型表示一个可以指向任何类型的对象的指针,它是泛指对象类型。如果用一个尖括号<>括起来的协议名称跟随在id 之后,则编译器(或读者)将知道你期望任意类型的对象,只要遵守该协议。id<Delegate>
_argent;

四、计数器的使用

1、TimerInterval:时间戳,每隔几秒调用一次。double 类型数据
2、target:调用方法的对象
3、selector:需要被调用的方法
4、userInfo:id  类型的用户信息,用以区分,在KVO会详细讲。可使用 nil
5、repeats:是否重复: YES /NO
    [NSTimerscheduledTimerWithTimeInterval:2
                                    target:self
                                  selector:@selector(test:)
                                  userInfo:@“Hello"
                                   repeats:YES];
    - (void)test:(NSTimer *)timer {

         id userInfo = timer.userInfo; //接收userInfo 信息
         [timerinvalidate]; //终止定时器

     }
6、让程序读到此处停下,但还在运行,直到某一个时间,再继续往下运行
   NSDate
*date = [NSDatedateWithTimeIntervalSinceNow:10];
    [[NSRunLoopcurrentRunLoop]runUntilDate:date];
7、让程序一直运行在此处逗留
    //    [[NSRunLoop currentRunLoop]run];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息