(转载)OC学习篇之---类的延展
前一篇文章我们介绍了类的类目概念和使用,那么这篇文章我们继续来介绍一下OC中的一个特性:延展。
其实说白了,延展就是弥补C语言中的前向申明,我们知道,在C语言中,如果你想调用一个函数的话,那么在此之前必须要声明一个这个函数,就是有前置性。
OC中为了弥补C语言中的这个问题,就有了延展的概念,下面来看一下代码:
Person.h
//
// Person.h
// 10_CategoryExtend
//
// Created by jiangwei on 14-10-11.
// Copyright (c) 2014年 jiangwei. All rights reserved.
// #import <Foundation/Foundation.h> @interface Person : NSObject - (void)work; @end
Person.m
//
// Person.m
// 10_CategoryExtend
//
// Created by jiangwei on 14-10-11.
// Copyright (c) 2014年 jiangwei. All rights reserved.
// #import "Person.h" //这个叫做延展
//或者private省去也是没有问题的
@interface Person (private)
- (void)_showInfo;
@end @implementation Person{
//在这里定义属性,这个属性也是私有的
//但是这种方式和之前定义的@private的区别
//两者的区别就是一个在.h文件中定义的,一个是.m文件中定义的
//如果是开源的话,一般是开放.h和.m文件
//如果是闭源的话,一般只开放.h文件
} - (void)work{
//这行代码现在编译是没有问题的,在Xcode之前版本这样调用的话是有问题的,因为我们在C语言中在方法实现之前去调用的话,就必须要在之前声明一下
//这里我们就使用延展技术实现私有方法
//当然Xcode之后的版本修正了这个问题,所以现在延展的用途就不是很大了
//相当于C语言中的前向声明
[self _showInfo];
NSLog(@"开始工作了");
} //私有方法,只是在.m文件中定义了,没有在.h文件中声明,一般是在类中自己使用的
- (void)_showInfo{
NSLog(@"我的信息");
} @end
这里我们看到,在Person.h头文件中,我们定义了work方法,在Person.m文件中对这个方法的实现,但是我们在work方法中调用了_showInfo方法,如果在Xcode之前的版本或者是C语言中的特性,应该在work之前声明一下_showInfo方法,所以这里就有了延展。
延展的定义:
@interface Person (private)
- (void)_showInfo;
@end
在类定义之前,当然这里的private也是可以省略的,这样在work方法中就可以进行调用了。但是最新的Xcode已经弥补了这个问题,所以说延展的功能几乎可以忽略。这里只是对OC中的延展做一下介绍,以后可能几乎用不到他。
总结
这篇文章中对OC中的延展概念做一下说明,OC中的延展用途几乎可以忽略,只要了解一下即可,以后几乎用不到这个功能。
(转载)OC学习篇之---类的延展的更多相关文章
- OC学习篇之---类的延展
来源:http://blog.csdn.net/jiangwei0910410003/article/details/41775603 前一篇文章我们介绍了类的类目概念和使用:http://blog. ...
- (转载)OC学习篇之---类的定义
之前已经介绍了OC中的一个程序HelloWorld,今天我们继续学习OC中类的相关知识. OC和C的最大区别就是具有了面向对象的功能,那么说到面向对象,就不得不说类这个概念了,如果学过Java的话,那 ...
- OC学习篇之---类的定义
OC中类的相关知识 OC和C的最大区别就是具有了面向对象的功能,那么说到面向对象,就不得不说类这个概念了,如果学过Java的话,那么对类和对象的概念就不陌生了,因为Java是非常纯正的面向对象设计语言 ...
- (转载)OC学习篇之---类的三大特性:封装,继承,多态
之前的一片文章介绍了OC中类的初始化方法和点语法的使用,今天来继续学习OC中的类的三大特性,我们在学习Java的时候都知道,类有三大特性:继承,封装,多态,这个也是介绍类的时候,必须提到的话题,那么今 ...
- (转载)OC学习篇之---类目的概念和使用
上一篇文章介绍了OC中的@class关键字的使用,这一篇我们介绍一下,OC中的一个特有的亮点:类目 首先我们来看一下场景,如果我们现在想对一个类进行功能的扩充,我们该怎么做? 对于面向对象编程的话,首 ...
- (转载)OC学习篇之---类的初始化方法和点语法的使用
昨天介绍了OC中类的定义和使用,今天我们来继续学习类的初始化方法和点语法的使用. 一.首先来看一下类的初始化方法 在Java中我们知道一个每个类都有构造方法,这里的初始化方法就是和构造方法一个概念的, ...
- OC学习篇之---类的三大特性(封装,继承,多态)
之前的一片文章介绍了OC中类的初始化方法和点语法的使用:http://blog.csdn.net/jiangwei0910410003/article/details/41683873,今天来继续学习 ...
- OC学习篇之---类目的概念和使用
上一篇文章介绍了OC中的@class关键字的使用http://blog.csdn.net/jiangwei0910410003/article/details/41774747,这一篇我们介绍一下,O ...
- OC学习篇之---类的初始化方法和点语法的使用
昨天介绍了OC中类的定义和使用:http://blog.csdn.net/jiangwei0910410003/article/details/41657603,今天我们来继续学习类的初始化方法和点语 ...
随机推荐
- zabbix接口调用注意事项--Python
不知道该怎么写,但是明显得写点什么,担心时间长了,忘记,再回顾时又要重新摸索一遍 一.Request:post params: 1. 第一层的参数处理: 第一层的参数设置为变量 2. 其他层参数格式不 ...
- 在android.app.Application中定义全局变量
在Android应用中使用全局变量,除了public的静态变量,还有更优雅的方式是使用android.app.Application. 启动Application时,系统会创建一个PID,即进程ID, ...
- [2014-03-13 08:46:42 - Dex Loader] Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace.
Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace. 问题提示 ...
- hdu - 2216 Game III && xtu 1187 Double Maze (两个点的普通bfs)
http://acm.hdu.edu.cn/showproblem.php?pid=2216 zjt和sara在同一个地图里,zjt要去寻找sara,zjt每移动一步sara就要往相反方向移动,如果他 ...
- R语言randomForest包实现随机森林——iris数据集和kyphosis数据集
library(randomForest)model.forest<-randomForest(Species~.,data=iris)pre.forest<-predict(model. ...
- HDU 1404 (博弈) Digital Deletions
首先如果第一个数字是0的话,那么先手必胜. 对于一个已知的先手必败状态,凡是能转移到先手必败的状态一定是必胜状态. 比如1是必败状态,那么2~9可以转移到1,所以是必胜状态. 10,10*,10**, ...
- UVa 699 (二叉树) The Falling Leaves
题意: 按先序方式输入一棵二叉树,节点是带权的,左孩子在父节点的左一个单位,右孩子在父节点的右一个单位,从左到右输出相同水平位置节点之和. 分析: 做了好几道二叉树的题,代码应该也很好理解了.这里ma ...
- codevs 1228 苹果树
dfs序+线段树 #include<iostream> #include<cstdio> #include<cstring> #include<algorit ...
- 物联网操作系统HelloX V1.79发布公告
经过HelloX开发团队近半年的努力,在HelloX V1.78版本基础上,增加许多功能特性,并对V1.78版本的一些特性进行了进一步优化之后,正式形成HelloX V1.79测试版本.经相对充分的测 ...
- .Net dll多个同名的程序集版本冲突共存与通过基本代码或探测定位程序集方案
.Net dll多个同名的程序集版本冲突共存与通过基本代码或探测定位程序集方案 在使用调用程序集的引用中的信息和配置文件中的信息确定了正确的程序集版本之后,并且在公共语言运行时在全局程序集缓存中进行检 ...