前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >协议与分类--27:Class-continuation分类隐藏实现细节

协议与分类--27:Class-continuation分类隐藏实现细节

作者头像
xy_ss
发布2023-11-22 08:25:45
1370
发布2023-11-22 08:25:45
举报
文章被收录于专栏:浮躁的喧嚣

Class-continuation分类

  • Class-continuation分类和普通的分类不同,它必须定义在其所接续的那个类的实现文件中
  • 此分类可以声明属性,且此分类没有特定的是现实文件,其中方法都定义在主实现文件中
  • 一般存放不需要对外公开的属性(例子中的age)
代码语言:javascript
复制
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property (nonatomic,copy,readonly) NSString *firstName;
@property (nonatomic,copy,readonly) NSString *lastName;
@property (nonatomic,strong,readonly) NSArray *friends;
- (instancetype)initWithFristName:(NSString *)firstName withLastName:(NSString *)lastName;
@end


--------------------
#import "Person.h"
@interface Person()
@property (nonatomic,assign) NSInteger age;
@property (nonatomic,strong,readwrite) NSArray *friends;
@end
@implementation Person
- (instancetype)initWithFristName:(NSString *)firstName withLastName:(NSString *)lastName{
    self = [super init];
    if (self) {
        _firstName = firstName;
        _lastName = lastName;
    }
    return self;
}
@end
  • 如果某属性在主接口中声明为“只读”,而类内部要用setter方法修改此属性,那么就在Class-continuation分类中将其扩展为“readwrite”(例子中的friends)
代码语言:javascript
复制
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property (nonatomic,copy,readonly) NSString *firstName;
@property (nonatomic,copy,readonly) NSString *lastName;
@property (nonatomic,strong,readonly) NSArray *friends;

- (instancetype)initWithFristName:(NSString *)firstName withLastName:(NSString *)lastName;
@end

-------------------------------
#import "Person.h"
@interface Person()
@property (nonatomic,strong,readwrite) NSArray *friends;
@end

@implementation Person
- (instancetype)initWithFristName:(NSString *)firstName withLastName:(NSString *)lastName{
    self = [super init];
    if (self) {
        _firstName = firstName;
        _lastName = lastName;
    }
    return self;
}
@end
  • 若想使类遵循的协议不为人知道,则可以在Class-continuation分类中声明
代码语言:javascript
复制
#import <Foundation/Foundation.h>
@class User;
@interface APP : NSObject
@property (nonatomic,strong) User *user;
@end

-----------------------------
#import "APP.h"
#import "User.h"
@interface APP()<UserDelegate>

@end
@implementation APP
-(void)doSomething{
    NSLog(@"dosomething");
}
@end
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-07-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Class-continuation分类
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档