OC中的一个特性:延展
其实说白了,延展就是弥补C语言中的前向申明,我们知道,在C语言中,如果你想调用一个函数的话,那么在此之前必须要声明一个这个函数,就是有前置性。
OC中为了弥补C语言中的这个问题,就有了延展的概念,下面来看一下代码:
Person.h
[objc]  view plaincopy
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 plaincopy 
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中的延展用途几乎可以忽略,只要了解一下即可,以后几乎用不到这个功能。

OC中的一个特性:延展的更多相关文章

  1. OC 中 类目、延展和协议

    Category : 也叫分类,类目. *是 为没有源代码的类 扩充功能 *扩充的功能会成为原有类的一部分,可以通过原有类或者原有类的对象直接调用,并且可继承 *该方法只能扩充方法,不能扩充实例变量 ...

  2. OC中的代理模式

    OC中的代理模式,关于代理模式,如果还有同学不太清楚的话,就自己去补充知识了,这里就不做介绍了,这里只介绍OC中是如何实现代理模式的.这里举一个简单的例子:小孩类,护士类,保姆类,其中小孩类有两个方法 ...

  3. OC中的@interface和java中的区别以及 @implementation @protocol

      java 在java中的interface是‘接口’的意思,而java的类声明用class,即接口用interface声明,类是用class声明,是两个独立的部分. 只有在类声明要实现某个接口时, ...

  4. OC中协议的概念以及用法

    OC中协议的概念以及用法,协议也是OC中的一个重点,Foundation框架以及我们后面在写代码都会用到. OC中的协议就是相当于Java中的接口(抽象类),只不过OC中的名字更形象点,因为我们在学习 ...

  5. MVC4项目中验证用户登录一个特性就搞定

    在开发过程中,需要用户登陆才能访问指定的页面这种功能,微软已经提供了这个特性. // 摘要: // 表示一个特性,该特性用于限制调用方对操作方法的访问. [AttributeUsage(Attribu ...

  6. 转:C4项目中验证用户登录一个特性就搞定

    转:C4项目中验证用户登录一个特性就搞定   在开发过程中,需要用户登陆才能访问指定的页面这种功能,微软已经提供了这个特性.     // 摘要:    //     表示一个特性,该特性用于限制调用 ...

  7. OC中给我们提供的一个技术:谓词(NSPredicate).note

    OC中给我们提供的一个技术:谓词(NSPredicate)OC中的谓词操作是针对于数组类型的,他就好比数据库中的查询操作,数据源就是数组,这样的好处是我们不需要编写很多代码就可以去操作数组,同时也起到 ...

  8. OC中另外的一个常用技术:通知(Notification)

    OC中另外的一个常用技术:通知(Nofitication)其实这里的通知和之前说到的KVO功能很想,也是用于监听操作的,但是和KVO不同的是,KVO只用来监听属性值的变化,这个发送监听的操作是系统控制 ...

  9. [转]MVC4项目中验证用户登录一个特性就搞定

    本文转自:http://www.mrhuo.com/Article/Details/470/A-Attribute-For-MVC4-Project-Used-To-Validate-User-Log ...

随机推荐

  1. 注意使用 BTREE 复合索引各字段的 ASC/DESC 以优化 order by 查询效率

    tbl_direct_pos_201506 表有 190 万数据.DDL: CREATE TABLE `tbl_direct_pos_201506` ( `acq_ins_code` char(13) ...

  2. C#整理3——运算符和语句

    运算符: 一.算术运算符:+ - * / % ——取余运算 取余运算的应用场景:1.奇偶数的区分. 2.把数变化到某个范围之内.——彩票生成. 3.判断能否整除.——闰年.平年. using Syst ...

  3. LINQ 基本子句之一 (select/where/group/into)

    特别喜欢同事看到我写了一句小排序的时候说,他当然喜欢Linq了,虽然我只是baidu之,不知其然也不知其所以然. 基本格式 var<变量> = from <项目> in < ...

  4. android开发Tost工具类管理(一)

    Tost工具类管理: package com.gzcivil.utils; import android.content.Context; import android.widget.Toast; / ...

  5. 枚举基类Enum详解

    本文主要是对枚举类型的基类Enum类做一个介绍: 首先,Enum类位于java.lang包下,根据类的介绍可以发现,Enum类是Java中所有枚举类的父类,将枚举作为一个set或者Map的keys来使 ...

  6. sed使用详解

    sed :Stream EDitor(流编辑器) sed :模式空间(默认不编辑源文件,仅对模式空间中数据做处理) sed [options] 'AddressCommand' file ... -n ...

  7. php中json_encode中文编码问题

    1 <?php 2 class myClass { 3 public$item1=1; 4 public$item2='中文'; 5 6 function to_json() { 7 //url ...

  8. (转载)iscroll.js的使用

    入门 Scroll是一个类,每个需要使用滚动功能的区域均要进行初始化.每个页面上的iScroll实例数目在设备的CPU和内存能承受的范围内是没有限制的. 尽可能保持DOM结构的简洁.iScroll使用 ...

  9. listView 单选实现

    上一篇知道可以使用android自带的listview的chiocemode的单选模式实现.但那个布局是系统自带的checkedTextView,有时候我们需要自己实现布局,那么下面我们开始实现   ...

  10. View的事件分发机制

    一.点击事件的传递规则 传递事件的主要方法: public boolean dispatchTouchEvent(MotionEvent ev) 如果事件能够传递到当前View,则该方法一定会被调用. ...