j9九游会登陆--首页直达

iOS SDK 开辟 -- 控制接口表露
  • 智网科技
  • ###
  • 分类: 履历之谈
  • 阅读量: 90

在 SDK 开辟中,常常会遇到一个题目,假定 SDKUser.h 是 SDK 对外表露的 Header, 此中 SDKUser 范例中的 uid 属性是不合错误外表露的,但在 SDK 中的某些公有类必要获取这个属性(或办法),这个时分j9九游会必要怎样处置呢?uid 属性是一个对 SDK 外是不行以见的,但对 SDK 内是可见的,这种状况,就可以利用 Category 来办理这个题目:

SDKUser.h 对外表露的头文件:
 

1
2
3
4
5
@interface SDKUser : NSObject
 
@property(nonatomic, copy, readonly) NSString *username;
 
@end

 

在对外表露的 Header 中,假如j9九游会不盼望内部来写这个工具的时分,j9九游会必要将属性设置为只读属性,但j9九游会又必要在对内支持读写,这时j9九游会必要在完成文件里重新设置该属性支持读写操纵。

SDKUser.m 完成文件:
 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#import "SDKUser.h"
 
@interface SDKUser()
 
// 对外属性
@property(nonatomic, copy, readwrite) NSString *username;
 
// 只对内属性
@property(nonatomic, copy, readwrite) NSString *uid;
 
@end
 
@implementation SDKUser
 
@end

 

由于 username 属性在 SDK 内是支持读写操纵的,以是必要设置为 readwrite,而 uid 这个属性这里是不盼望表露给用户的,以是j9九游会将该属性界说在 .m 文件里中,但界说 .m 文件里时,只支持类内的拜访,假如 SDK 内的别的公有类想拜访就无法拜访到这个属性了。

这种状况下,j9九游会可以对 SDKUser 这个类举行 Category,并将 SDK 里的相干公有属性(或办法)完成在内里:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#import "SDKUser.h"
 
@interface SDKUser (SDKInner)
 
// 根本属性
@property(nonatomic, copy) NSString *uid;
@property(nonatomic, copy, readonly) NSString *username;
 
@end
 
 
###
 
 
#import "SDKUser+SDKInner.h"
 
@implementation SDKUser (SDKInner)
 
@end

 

如许的话 SDK 内的公有类就可以拜访 SDKUser 内里的 uid 属性,而且又不会表露给开辟者。