OC学习篇之---类的延展

2023-11-10

前一篇文章我们介绍了类的类目概念和使用:http://blog.csdn.net/jiangwei0910410003/article/details/41775329,那么这篇文章我们继续来介绍一下OC中的一个特性:延展

其实说白了,延展就是弥补C语言中的前向申明,我们知道,在C语言中,如果你想调用一个函数的话,那么在此之前必须要声明一个这个函数,就是有前置性。

OC中为了弥补C语言中的这个问题,就有了延展的概念,下面来看一下代码:

Person.h

[objc]  view plain  copy
  1. //  
  2. //  Person.h  
  3. //  10_CategoryExtend  
  4. //  
  5. //  Created by jiangwei on 14-10-11.  
  6. //  Copyright (c) 2014年 jiangwei. All rights reserved.  
  7. //  
  8.   
  9. #import <Foundation/Foundation.h>  
  10.   
  11. @interface Person : NSObject  
  12.   
  13. - (void)work;  
  14.   
  15. @end  


Person.m

[objc]  view plain  copy   在CODE上查看代码片 派生到我的代码片
  1. //  
  2. //  Person.m  
  3. //  10_CategoryExtend  
  4. //  
  5. //  Created by jiangwei on 14-10-11.  
  6. //  Copyright (c) 2014年 jiangwei. All rights reserved.  
  7. //  
  8.   
  9. #import "Person.h"  
  10.   
  11. //这个叫做延展  
  12. //或者private省去也是没有问题的  
  13. @interface Person (private)  
  14.     - (void)_showInfo;  
  15. @end  
  16.   
  17. @implementation Person{  
  18.     //在这里定义属性,这个属性也是私有的  
  19.     //但是这种方式和之前定义的@private的区别  
  20.     //两者的区别就是一个在.h文件中定义的,一个是.m文件中定义的  
  21.     //如果是开源的话,一般是开放.h和.m文件  
  22.     //如果是闭源的话,一般只开放.h文件  
  23. }  
  24.   
  25. - (void)work{  
  26.     //这行代码现在编译是没有问题的,在Xcode之前版本这样调用的话是有问题的,因为我们在C语言中在方法实现之前去调用的话,就必须要在之前声明一下  
  27.     //这里我们就使用延展技术实现私有方法  
  28.     //当然Xcode之后的版本修正了这个问题,所以现在延展的用途就不是很大了  
  29.     //相当于C语言中的前向声明  
  30.     [self _showInfo];  
  31.     NSLog(@"开始工作了");  
  32. }  
  33.   
  34. //私有方法,只是在.m文件中定义了,没有在.h文件中声明,一般是在类中自己使用的  
  35. - (void)_showInfo{  
  36.     NSLog(@"我的信息");  
  37. }  
  38.   
  39. @end  
这里我们看到,在Person.h头文件中,我们定义了work方法,在Person.m文件中对这个方法的实现,但是我们在work方法中调用了_showInfo方法,如果在Xcode之前的版本或者是C语言中的特性,应该在work之前声明一下_showInfo方法,所以这里就有了延展:

延展的定义:

@interface Person (private)

    - (void)_showInfo;

@end

在类定义之前,当然这里的private也是可以省略的,这样在work方法中就可以进行调用了。但是最新的Xcode已经弥补了这个问题,所以说延展的功能几乎可以忽略。这里只是对OC中的延展做一下介绍,以后可能几乎用不到他。


总结

这篇文章中对OC中的延展概念做一下说明,OC中的延展用途几乎可以忽略,只要了解一下即可,以后几乎用不到这个功能。



from: http://blog.csdn.net/jiangwei0910410003/article/details/41775603/


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OC学习篇之---类的延展 的相关文章

随机推荐

  • Tracker 服务器地址大全 Tracker List

    https dns icoa cn tracker udp tracker tiny vps com 6969 announce https 1337 abcvg info announce https tracker fastdownlo
  • 【Linux系统编程(二)】Linux文件IO操作

    文章目录 Linux文件IO操作 1 系统调用 2 系统调用和库函数的区别 3 C库中IO函数工作流程 4 文件描述符 4 1 文件描述符表是如何管理文件描述符的呢 4 2 查看当前系统文件描述最大数量 5 文件IO的操作 5 1 open
  • 关于split(String agrex)

    split a b c 得到 a b c a b c 得到 a b c 前面的空格一个都不会省略 a b c 得到 a b c 中间空格省略一个 后缀的空格全部省略 不是以空格而是以某个String为划分依据时 现象相同 split a a
  • 2021-06-22安装docker-ce

    安装docker ce Docker 支持以下的 64 位 CentOS 版本 CentOS 7 CentOS 8 更高版本 使用官方安装脚本自动安装 安装命令如下 curl fsSL https get docker com bash s
  • VUE问题汇总(一)

    vue的起步教程与api https cn vuejs org v2 guide vue组件库 https element eleme cn zh CN component installation 1 解决vue中时间控件中获取时间少一天
  • 前端三大框架(vue、react、angular)对比(一)

    官网 vue https cn vuejs org react https react docschina org angular https angular cn 三者总体介绍 都是MVVM 从后端的MVC衍生 类型的框架 基本都用于构建
  • 时序数据库timescaleDB安装

    参考链接 时序数据库timescaleDB安装 http www lwops cn thread 300 1 1 html 本环境在Centos7 5采用编译安装的方式 主要介绍PostgreSQL 11 7 TimescaleDB 1 6
  • 机器学习理论笔记(一):初识机器学习

    文章目录 1 前言 蓝色是天的机器学习笔记专栏 1 1 专栏初衷与定位 1 2 本文主要内容 2 机器学习的定义 2 1 机器学习的本质 2 2 机器学习的分类 3 机器学习的基本术语 4 探索 没有免费的午餐 定理 NFL 5 结语 1
  • tkinter控件样式

    文章目录 以按钮为例 共有参数 动态属性 tkinter系列 GUI初步 布局 绑定变量 绑定事件 消息框 文件对话框 控件样式 扫雷小游戏 强行表白神器 以按钮为例 tkinter对控件的诸多属性提供了可定制的功能 下面以最常用的按钮作为
  • 学习 Spring Boot:(二十九)Spring Boot Junit 单元测试

    前言 JUnit 是一个回归测试框架 被开发者用于实施对应用程序的单元测试 加快程序编制速度 同时提高编码的质量 JUnit 测试框架具有以下重要特性 测试工具 测试套件 测试运行器 测试分类 了解 Junit 基础方法 加入依赖 在 po
  • Eclipse中的checkstyle插件

    一 Checkstyle工具 Checkstyle是一款检查Java程序源代码样式的工具 它可以有效的帮助我们检视代码以便更好的遵循代码编写标准 官方地址 http checkstyle sourceforge net 二 在Eclipse
  • PPT模板

    http www officeplus cn List shtml cat PPT tag 1
  • CH3-Android常见界面控件

    目标 掌握简单控件的使用 能够独立搭建一个注册界面 掌握ListView控件与RecyclerView控件的使用 能独立搭建列表界面 掌握自定义控件的定义方式 能够自定义一个简单的控件 几乎每一个Android应用都是通过界面控件与用户交互
  • Linux--多线程(1)

    目录 一 概念 二 理解 三 创建 退出 合并进程 man pthread create Compile and link with pthread 1 为什么没有fun函数 2 加上sleep来改进 3 线程结束会不会影响主线程运行 4
  • Java应用调试利器——BTrace教程

    http www jianshu com p 26f19095d396 背景 生产环境中可能出现各种问题 但是这些问题又不是程序error导致的 可能是逻辑性错误 这时候需要获取程序运行时的数据信息 如方法参数 返回值来定位问题 通过传统的
  • ZRANGEBYSCORE

    ZRANGEBYSCORE key min max WITHSCORES LIMIT offset count 返回有序集 key 中 所有 score 值介于 min 和 max 之间 包括等于 min 或 max 的成员 有序集成员按
  • Python Tkinter详解 (四)文本输入框的使用

    同样的 我们先创建出一个最最最最最简单的输入框 我们在进行信息交互的时候 会经常使用输入框为我们的系统键入信息 那么他又有哪些属性呢 import tkinter as tk window tk Tk tk Entry window wid
  • STM32 基础系列教程 20 - RTC

    前言 学习stm32 RTC 实时时钟 的使用 学会用RTC实现钟表功能 示例详解 基于硬件平台 STM32F10C8T6最小系统板 MCU 的型号是 STM32F103c8t6 使用stm32cubemx 工具自动产生的配置工程 使用KE
  • 二叉树的相关列题!!

    对于二叉树 很难 很难 笔者也是感觉很难 虽然能听懂课程 但是 对于大部分的练习题并不能做出来 所以感觉很尴尬 因此 笔者经过先前的那篇博客 已经开启了大脑奇迹 现在还热乎着 刚刚的更文 二叉树讲解https blog csdn net w
  • OC学习篇之---类的延展

    前一篇文章我们介绍了类的类目概念和使用 http blog csdn net jiangwei0910410003 article details 41775329 那么这篇文章我们继续来介绍一下OC中的一个特性 延展 其实说白了 延展就是