当前位置: 首页 > news >正文

【延展Extension Objective-C语言】

一、延展Extension是个什么东西:它是个特殊的分类

1.是1个特殊的分类,所以延展也是类的一部分

2.延展的特殊之处:

1)延展这个特殊的分类,没有名字,以前讲过的分类,是不要取个名字啊,记住,延展这个特殊的分类没有名字

2)延展只有声明,没有实现,它的实现是和本类共享1个实现

3.延展的语法:

@interface 本类名 ()

@end

()这里面什么都不要写,就有1个小括号就可以了,这就是延展的声明

有没有@implementation呢,没有,记住,延展只有声明,没有实现。那它的实现在什么地方呢,我们刚刚说过,和本类共享1个实现

二、举个例子:

1.先有1个本类:Person类,如下:

#import <Foundation/Foundation.h>

@interface Person : NSObject
@property(nonatomic,strong)NSString *name;
@property(nonatomic,assign)int age;

  • (void)sayHi;
    @end

#import “Person.h”

@implementation Person

  • (void)sayHi
    {
    NSLog(@“大家好!”);
    }
    @end

2.再给它来1个延展:点右键,New File-Objective- C File,选择Extension,给这个延展取个名字,test,我们说过延展是1个分类对不对,那你要延展谁呢,延展Person对不对。

3.这时候,你发现与我们的分类不同的地方在于,它只有一个.h文件,有.m文件吗,没有。而且,刚才给延展取的名字test,是延展的文件名,并不是延展的名字,因为我们说过,延展是没有名字的。你看它声明的@interface Person (),它里面有名字吗,没有。首先这是个分类,因为这个分类没有名字,所以它叫延展。

4.只有1个.h文件,文件名称:本类名+延展的文件名.h,这个文件当中,只有延展的声明

@interface Person ()

@end

5.这个延展,它的作用,仍然是作为类的一部分,也就是这时候,我可以把Person的成员,写在本类里面,也可以把Person的成员,写在延展里面。你不管写在什么地方,都是同一个Person类,例如,在延展中写个方法吧,写个- (void)run;方法

- (void)run;

8:48

相关文章:

  • IDA* AcWing 181. 回转游戏
  • Web3小知识集锦
  • tensorflow基础
  • android自定义Apk名称和指定生成的路径
  • java框架----SSM快速整合教程
  • mongodb基本操作及使用
  • jQuery中的函数
  • leetcode:188. 买卖股票的最佳时机IV
  • 电脑技巧:Win7、Win10、Win11如何选择,看完你就懂了
  • 【初阶数据结构】堆排序和TopK问题
  • 筑梦远航 势不可挡|和数研究院四周岁啦
  • 广东2022年上半年系统集成项目管理工程师下午真题及答案解析
  • 【论文解读系列】NER方向:LatticeLSTM (ACL2018)
  • java毕业设计成品源码网站基于JSP的网上订餐管理系统|餐饮就餐订餐餐厅
  • Jenkins更新版本和插件导致maven工程job丢失(不显示)或部分功能丧失(svn,ssh)
  • 【Linux系统编程】快速查找errno错误码信息
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • Java的Interrupt与线程中断
  • Markdown 语法简单说明
  • STAR法则
  • 编写符合Python风格的对象
  • 力扣(LeetCode)21
  • 聊聊flink的TableFactory
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 听说你叫Java(二)–Servlet请求
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • 从如何停掉 Promise 链说起
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (windows2012共享文件夹和防火墙设置
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转)为C# Windows服务添加安装程序
  • ****Linux下Mysql的安装和配置
  • .Net Remoting(分离服务程序实现) - Part.3
  • .net中的Queue和Stack
  • /dev下添加设备节点的方法步骤(通过device_create)
  • @RequestBody与@ResponseBody的使用
  • @vue/cli脚手架
  • [1] 平面(Plane)图形的生成算法
  • [Android]Tool-Systrace
  • [BT]小迪安全2023学习笔记(第15天:PHP开发-登录验证)
  • [BZOJ2208][Jsoi2010]连通数
  • [HCTF 2018]WarmUp (代码审计)
  • [Java基础]—JDBC
  • [JS入门到进阶] 前端开发不能写undefined?这是误区!
  • [leetcode 数位计算]2520. 统计能整除数字的位数
  • [LeetCode] 19. 删除链表的倒数第 N 个结点
  • [one_demo_1]php中的文件锁
  • [python]python筛选excel表格信息并保存到另一个excel
  • [Qualcomm][Power]QCM2290功耗异常问题
  • [Swift]LeetCode856. 括号的分数 | Score of Parentheses