9.0OC基础语法-协议的简单使用

简单使用
基本用途
可以用来声明一大堆方法(不能声明成员变量)
只要某个类遵守了这个协议,就相当于拥有这个协议中的所有方法声明
只要父类遵守了某个协议,就相当于子类也遵守了

格式
协议的编写
@protocol 协议名称
// 方法声明列表
@end
某个类遵守协议
@interface 类名 : 父类 <协议名称>
@end

关键字
协议中有2个关键字可以控制方法是否要实现(默认是@required),在大多数情况下,用途在于程序员之间的交流
@required:这个方法必须要实现(若不实现,编译器会发出警告)
@optional:这个方法不一定要实现

协议遵守协议
一个协议可以遵守其他多个协议,多个协议之间用逗号 , 隔开
一个协议遵守了其他协议,就相当于拥有了其他协议中的方法声明
@protocol 协议名称 <协议1, 协议2>
@end

基协议
NSObject是一个基类,最根本最基本的类,任何其他类最终都要继承它
其实还有一个协议,名字也叫NSObject,它是一个基协议,最根本最基本的协议
NSObject协议中声明很多最基本的方法,比如description、retain、release等
建议每个新的协议都要遵守NSObject协议

定义变量时指定协议
// NSObject类型的对象,并且要遵守NSCopying协议
NSObject<NSCopying> *obj;
// 任何OC对象,并且要遵守NSCoding协议
id<NSCoding> obj2;

代理设计模式
设计原理
有些麻烦的事情不想自己亲自做,就可以找个人帮忙做,即交给代理对象去做

设计原则
首先得拥有某个代理对象属性
其次要很清楚代理有哪些方法
最后要保证能解耦

实现方案
定义一个protocol,在其中声明一些和代理沟通的方法
拥有一个代理属性id<protocol> delegate
让代理遵守protocol

时间: 2025-01-14 07:52:41

9.0OC基础语法-协议的简单使用的相关文章

11.0OC基础语法-ARC的简单认识

基本简介ARC是自iOS 5之后增加的新特性,完全消除了手动管理内存的烦琐,编译器会自动在适当的地方插入适当的retain.release.autorelease语句.你不再需要担心内存管理,因为编译器为你处理了一切ARC 是编译器特性,而不是 iOS 运行时特性,它也不是类似于其它语言中的垃圾收集器.因此 ARC 和手动内存管理性能是一样的,有时还能更加快速,因为编译器还可以执行某些优化 基本原理规则ARC 的规则非常简单:只要还有一个强指针变量指向对象,对象就会保持在内存中 强指针和弱指针默

5.0OC基础语法-继承、多态

继承继承的基本用法设计两个类Bird.Dog // Bird的声明 @interface Bird : NSObject { @public int weight; } - (void)eat; @end // Bird的定义 @implementation Bird - (void)eat { NSLog(@"吃吃吃-体重:%d", weight); } @end // Dog的声明 @interface Dog : NSObject { @public int weight; }

8.0OC基础语法-内存管理

什么是内存管理移动设备的内存极其有限,每个app所能占用的内存是有限制的当app所占用的内存较多时,系统会发出内存警告,这时得回收一些不需要再使用的内存空间.比如回收一些不需要使用的对象.变量等管理范围:任何继承了NSObject的对象,对其他基本数据类型(int.char.float.double.struct.enum等)无效 对象的基本结构每个OC对象都有自己的引用计数器,是一个整数,表示“对象被引用的次数”,即有多少人正在使用这个OC对象每个OC对象内部专门有4个字节的存储空间来存储引用

Swift中协议的简单介绍

熟悉objective-c语言的同学们肯定对协议都不陌生,在Swift中苹果将 protocol 这种语法发扬的更加深入和彻底.Swift语言中的 protocol 不仅能定义方法还能定义属性,配合 extension 扩展的使用还能提供一些方法的默认实现,而且不仅类可以遵循协议,现在的枚举和结构体也能遵循协议了.基于此本文从 1,协议中定义属性和方法 , 2,协议的继承.聚合.关联类型 , 3,协议的扩展 , 4,Swift标准库中常见的协议 , 5,为什么要使用协议 5个方面结合自身的学习经

Swift与C#的基础语法比较

背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对比来加深认识. 所以做了一个简单的比较列表. 下面是基础语法的比较: Swift C#(4.0以上) 常量定义: let name=”cyq.data” Const name=”cyq.data”; 变量定义: 指定类型: var name=”cyq.data” var name:String=”c

javascript中正则表达式的基础语法

× 目录 [1]定义[2]特点[3]元字符[4]转义字符[5]字符组[6]量词[7]括号[8]选择[9]断言[10]模式[11]优先级[12]局限性 前面的话 正则表达式在人们的印象中可能是一堆无法理解的字符,但就是这些符号却实现了字符串的高效操作.通常的情况是,问题本身并不复杂,但没有正则表达式就成了大问题.javascript中的正则表达式作为相当重要的知识,本文将介绍正则表达式的基础语法 定义 正则表达式(Regular Expression)是一门简单语言的语法规范,是强大.便捷.高效的

大数据技术之_24_电影推荐系统项目_02_Python 基础语法

第六章 Python 基础语法6.1 Python 综述6.1.1 Python 是什么6.1.2 Python 的发展6.1.3 Python 的特点6.2 Python3 安装6.2.1 Python3 和 Python2 的区别6.2.2 Python3 环境的安装(以 windows 为例)6.2.3 Anaconda(巨蟒) 安装教程(可选)6.3 Python 基本语法6.3.1 编码6.3.2 标识符6.3.3 注释6.3.4 关键字和保留字6.3.5 行和缩进6.3.6 多行语句

Java入门 - 语言基础 - 03.基础语法

原文地址:http://www.work100.net/training/java-basic-syntax.html更多教程:光束云 - 免费课程 基础语法 序号 文内章节 视频 1 第一个Java程序 - 2 基本语法 - 3 Java标识符 - 4 Java修饰符 - 5 Java变量 - 6 Java数组 - 7 Java枚举 - 8 Java关键字 - 9 Java注释 - 10 Java空行 - 11 继承 - 12 接口 - 13 Java源程序与编译型运行区别 - 请参照如上章节

前端学PHP之正则表达式基础语法

前面的话 正则表达式是用于描述字符排列和匹配模式的一种语法规则.它主要用于字符串的模式分割.匹配.查找及替换操作.在PHP中,正则表达式一般是由正规字符和一些特殊字符(类似于通配符)联合构成的一个文本模式的程序性描述.正则表达式有三个作用:1.匹配,也常常用于从字符串中析取信息:2.用新文本代替匹配文本:3.将一个字符串拆分为一组更小的信息块.本文将详细介绍PHP中的正则表达式基础语法 [注意]关于javascript的正则表达式的详细信息移步至此 历史 在PHP中有两套正则表达式函数库,两者功