前一篇文章咱們介紹了類的類目概念和使用:http://blog.csdn.net/jiangwei0910410003/article/details/41775329,那麼這篇文章咱們繼續來介紹一下OC中的一個特性:延展函數
其實說白了,延展就是彌補C語言中的前向申明,咱們知道,在C語言中,若是你想調用一個函數的話,那麼在此以前必需要聲明一個這個函數,就是有前置性。spa
OC中爲了彌補C語言中的這個問題,就有了延展的概念,下面來看一下代碼:.net
Person.hcode
// // 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 // 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方法,因此這裏就有了延展:
延展的定義:blog
@interface Person (private)ip
- (void)_showInfo;get
@endio
在類定義以前,固然這裏的private也是能夠省略的,這樣在work方法中就能夠進行調用了。可是最新的Xcode已經彌補了這個問題,因此說延展的功能幾乎能夠忽略。這裏只是對OC中的延展作一下介紹,之後可能幾乎用不到他。總結編譯
這篇文章中對OC中的延展概念作一下說明,OC中的延展用途幾乎能夠忽略,只要瞭解一下便可,之後幾乎用不到這個功能。
class