Objective-C类目延展协议

注:小编在技术上仍是有很大的纰漏,发表此博客但愿各位有路过的大牛人物给予评论,给于指正,小编在此很是感谢!此文章为小编本身作的笔记,有不当之处望请指出,小编非常感谢,若用于一些抄袭的勾当,出现一些不可挽回的问题,小编在此声明不负任何责任;xcode

1、类目:(Category)ui

是在原有类的基础之上添加方法,在使用的时候只须要用原有类实例化出来的对象便可;spa

实际开发中什么状况下使用类目?code

         已经封装好的类,(不但愿再改变原有类)对象

         团队里面分工开发一个模块的时候可使用本身定义的方法;接口

 

2、延展:(Extension)的基本概念和用法;开发

 

在xcode4.3以前直接使用self 调用方法  那时候会报错,因此的用延展博客

 

就是在类中添加私有方法,延展中声明的方法在类的自己的@interface  类名()和它对应的@end之间实现;io

 

类有时须要方法只有本身所见,咱们能够经过延展类的方式定义类的私有方法;require

3、协议:Protocol

协议就是共同遵照的一个条约,只有一个声明文件;

协议时能够被任何类实现的方法,协议自己不是类,他是定义了一个其余类可实现的接口;

协议是 只声明  不实现

 

没有实现的类目 又叫作 非正式协议

 

由于通常状况下类都从NSObject的类目中所声明的方法,这个类能够实现也能够不实现;

 

非正式协议是以圆括号表示,而正是协议是以<>来表示;

 

若是子类要建立协议时,只要在基类遵照某一协议就行;

 

在哪个类里面导入了协议,就要在哪个类里面 实现这个协议的方法,

 

NSObject的类目中所列出的方法表示可能但愿要实现的方法,若是使用可能更好的完成工做;

注:

@required 必须 强制实现    不实现    就报错;

@optional  选择实现的

实例:

BOOL n = [xueSheng respondsToSelector:@selector(night)];

        if (n!=NO) {

            NSLog(@"糟了,没有打卡!");

            [xueSheng night];

        }

        else

        {

            NSLog(@"还好!");

        }

解释:

一、respondsToSelector://判断能不能响应一个方法;

二、@selector方法选择器  是 用来选择方法的

三、判断后是一个bool类型的,因此须要一个bool来接收;

四、if对协议进行肯定是否有协议;

相关文章
相关标签/搜索