OC學習篇之---類的延展 分類: IOS 2014-12-06 15:38 2202人閱讀 評論(1) 收藏

前一篇文章咱們介紹了類的類目概念和使用: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

//
//  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

相關文章
相關標籤/搜索