下面是我在學習的過程中學到的一點知識,雖然很膚淺,不過本人也想與大家一起分享!希望多指點。
先看代碼結構
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;
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------
這雖然不能強制限制調用,可是算是一種好的編碼習慣吧? 我這麼理解的