OC之Cagegory, Extension, Protocol协议

本文介绍了Objective-C中的Protocol,将其比喻为任务清单,规定了需要实现的方法。Protocol仅包含方法声明,没有实现部分。实现了Protocol的类需要遵循并实现其@required方法,而@optional方法则可以选择实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Category(分类,类目) 的定义和使用
Extension 延展
Protocol 协议

Extension 延展的主要作用:为类添加”私有”方法.

面向对象编程的另外一个名字叫做面向接口编程.

我们在设计一个类的时候,有些方法需要对外公开(接口), 有些方法可能仅仅内部使用.

Extension 的功能是帮助我们去管理这些内部使用的方法(私有方法).

Extension 针对的是自己的类,必须有源代码的类.

延展 也是扩充类的功能的一种方式 , 只不过延展扩充的内容是私有的 , 实在 .m 文件中定义的 . 延展 即可以扩展方法也可以扩展实例变量 , 只不过都是私有的 , 外界无法直接访问 . 延展 是为有源代码的类扩充内容 .(extension)


Protocol 协议
Protocol, 是iOS开发中常用的技术
协议是一套标准(一堆方法的声明), 只有.h文件
接受协议的对象实现协议中定义的方法.

/** *  协议,就相当于一个任务清单,规定了要做的操作.(只有一系列方法的声明).谁服从该协议,谁就要实现协议中的方法.(完成任务中清单中的任务).所以协议只有.h文件,没有.m文件. */

@protocol TeachingProtocol <NSObject>

//@optional可选的,被它修饰的方法服从协议的类,可以选择实现. (可以实现,也可以不实现).

//@required必须的,被它修饰的方法服从协议的类,必须实现(没有商量的余地)

@optional

- (void)teachKVC;//KVC

@required//必须得做 

- (void)teachMemory;//讲内存

@end



//<> 表示服从协议,服从的协议写在<>之内

@interface Person :NSObject <TeachingProtocol>

@end

基于python实现的粒子群的VRP(车辆配送路径规划)问题建模求解+源码+项目文档+算法解析,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档 算法设计的关键在于如何向表现较好的个体学习,标准粒子群算法引入惯性因子w、自我认知因子c1、社会认知因子c2分别作为自身、当代最优解和历史最优解的权重,指导粒子速度和位置的更新,这在求解函数极值问题时比较容易实现,而在VRP问题上,速度位置的更新则难以直接采用加权的方式进行,一个常见的方法是采用基于遗传算法交叉算子的混合型粒子群算法进行求解,这里采用顺序交叉算子,对惯性因子w、自我认知因子c1、社会认知因子c2则以w/(w+c1+c2),c1/(w+c1+c2),c2/(w+c1+c2)的概率接受粒子本身、当前最优解、全局最优解交叉的父代之一(即按概率选择其中一个作为父代,不加权)。 算法设计的关键在于如何向表现较好的个体学习,标准粒子群算法引入惯性因子w、自我认知因子c1、社会认知因子c2分别作为自身、当代最优解和历史最优解的权重,指导粒子速度和位置的更新,这在求解函数极值问题时比较容易实现,而在VRP问题上,速度位置的更新则难以直接采用加权的方式进行,一个常见的方法是采用基于遗传算法交叉算子的混合型粒子群算法进行求解,这里采用顺序交叉算子,对惯性因子w、自我认知因子c1、社会认知因子c2则以w/(w+c1+c2),c1/(w+c1+c2),c2/(w+c1+c2)的概率接受粒子本身、当前最优解、全局最优解交叉的父代之一(即按概率选择其中一个作为父代,不加权)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值