Objective-c扩展方法的一种:延展

本文分享了在 Objective-C 编程中使用类扩展隐藏方法的技巧,通过 SceneManager 和 SubSceneManager 的实例,展示了如何在不强制限制调用的情况下,形成良好的编码习惯。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面是我在学习的过程中学到的一点知识,虽然很肤浅,不过本人也想与大家一起分享!希望多指点。

先看代码结构
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;
}

-----------------------------------------------------------------------------------------------------------------------------------------------------------
这虽然不能强制限制调用,可是算是一种好的编码习惯吧? 我这么理解的

转载于:https://www.cnblogs.com/gnface/archive/2012/08/28/2659837.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值