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

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

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

一、类目:(Category)

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

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

         已经封装好的类,(不希望再改变原有类)

         团队里面分工开发一个模块的时候可以使用自己定义的方法;

 

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

 

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

 

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

 

类有时需要方法只有自己所见,我们可以通过延展类的方式定义类的私有方法;

三、协议:Protocol

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

协议时可以被任何类实现的方法,协议本身不是类,他是定义了一个其他类可实现的接口;

协议是 只声明  不实现

 

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

 

因为一般情况下类都从NSObject的类目中所声明的方法,这个类可以实现也可以不实现;

 

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

 

如果子类要创建协议时,只要在基类遵守某一协议就行;

 

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

 

NSObject的类目中所列出的方法表示可能希望要实现的方法,如果使用可能更好的完成工作;

注:

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

@optional  选择实现的

实例:

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

        if (n!=NO) {

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

            [xueSheng night];

        }

        else

        {

            NSLog(@"还好!");

        }

解释:

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

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

3、判断后是一个bool类型的,所以需要一个bool来接收;

4、if对协议进行确定是否有协议;

转载于:https://www.cnblogs.com/iOS-mainstay/p/4600860.html

你可能感兴趣的文章
数据库存储引擎
查看>>
[2019.2.13]BZOJ4318 OSU!
查看>>
版本号带两个小数点的,如何比较大小?( NSStringCompareOptions )
查看>>
QCustomplot使用分享(三) 图
查看>>
什么是java?
查看>>
WPF路径动画(动态逆向动画)
查看>>
Low Level Reader Protocol (LLRP) 简介
查看>>
[Micropython]TPYBoard v10x NRF24L01无线通讯模块使用教程
查看>>
mysql中show processlist过滤和杀死线程
查看>>
最新Sublime Text 2 激活 汉化
查看>>
基础数据类型之字典
查看>>
第七次作业
查看>>
Oracle中NVARCHAR2与VARCHAR2的区别
查看>>
php debug
查看>>
Ubuntu构建LVS+Keepalived高可用负载均衡集群【生产环境部署】
查看>>
lvm实现快速备份文件及数据库,lvm快照原理
查看>>
设计模式之Factory Method(工厂方法)
查看>>
10K入职linux运维岗位小伙伴感谢信及面试经历分享
查看>>
zookeeper入门之Curator的使用之几种监听器的使用
查看>>
[转]Reporting Service部署之访问权限
查看>>