Objective-c擴充方法的一種:延展

來源:互聯網
上載者:User

下面是我在學習的過程中學到的一點知識,雖然很膚淺,不過本人也想與大家一起分享!希望多指點。

先看代碼結構
Test
   main.m
   SceneManager.h
   SceneManager.m
  
SubSceneManager.h
  
SubSceneManager.m

------------------
下面是代碼實現:

SceneManager.h

#import <Foundation/Foundation.h>

@interface
SceneManager : NSObject

- (void)
go;
@end

SceneManager.m

#import
"SceneManager.h"

// 對類的延展 - 隱藏方法 wrap的一種手段(非強制)
@interface
SceneManager ()
+ (void) wrap;
@end
   
@implementation
SceneManager

- (id)init
{
    self = [super init];
    if (self) {
        // Initialization code here.
    }
   
    return self;
}

- (void) go {
    NSLog(@"method of go");
}

+ (void) wrap {
    NSLog(@"method of wrap");
}

@end

SubSceneManager.h

#import
"SceneManager.h"

@interface SubSceneManager :
SceneManager

@end

SubSceneManager.m

#import
"SubSceneManager.h"

@implementation SubSceneManager

- (id)init
{
    self = [super init];
    if (self) {
        // Initialization code here.
    }
   
    return self;
}

@end

main.m
#import
<Foundation/Foundation.h>
#import "SceneManager.h"
#import
"SubSceneManager.h"
int main (int argc, const char * argv[])
{

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
   
    SceneManager *sm = [[SubSceneManager alloc] init];
    [sm go];
  
    // 此句應該注釋掉
/*
    [SceneManager wrap];      // 這裡會抱一個警告:Class method of "+ wrap" not found
                                          // 不過雖然是警告,不過運行是正常的,不過這麼寫在自我規範上不好,即使編譯器沒有做強制限制,我們自己也要限制自己。
                                          // 不然,延展方法就毫無意義可言。
*/
    [pool drain];
    return 0;
}

-----------------------------------------------------------------------------------------------------------------------------------------------------------
這雖然不能強制限制調用,可是算是一種好的編碼習慣吧? 我這麼理解的

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.