objective c 类目 延展 协议

类目(Category)又叫类别:为封装类添加额外的方法,对现有类扩展

类目定义的方法会成为原始类的一部分,子类可以继承已经添加类目的父类的所有方法,但父类不能拥有子类的类目方法,类目不继承原始类,只兼容和扩展原始类

无法向类目中添加新的成员变量,只能通过继承添加;如果在类目中覆盖现有类方法,会引起super 消息的断裂,不能再访问原来类中同名的方法,因为类目方法更高的优先级,因此一般不要覆盖现有类方法

 

<span style="font-size:14px;">@interface NSMutableArray (Sort) //为NSMutableArray类添加Sort方法,Sort就是类目名,做到见名知意
-(void)invert;//方法
@end

//实现部分

#import "NSMutableArray+Sort.h"
@implementation NSMutableArray (Sort)
-(void)invert
{
  //执行代码
}
@end

//如何使用
//在主函数里边可以直接调用上边的invert方法

 NSMutableArray * arr = [[NSMutableArray alloc]initWithObjects:@"12",@"4",@"89",@"88",@"36", nil];    
 [arr invert];    </span>
Category的使用场景有那些呢:
1、类包含了很多个方法实现,而这些方法需要不同团队的成员来实现
2、当你在使用基础类库中的类时,你不想继承这些类而只想添加一些方法时。
 
Category能实现上面的需求,当然也有使用Category是需要注意的问题:
1、Category可以访问原始类的实例变量,但不能添加实例变量,如果想添加变量,那就通过继承创建子类来实现。
2、Category可以重载原始类的方法,不大不推荐这么做,这样会覆盖掉原始类的方法。如果确实要重载,那就通过继承创建子类来实现。
3、和普通接口有所区别的是,在Category的实现文件中的实例方法只要你不去调用它你可以不用实现所有声明的所有方法。


延展(Extension)“匿名”的类目,延展定义类的私有方法,一般是在类的实现文件@implementation之上定义如:Person() 和类目的区别在于括号里面是空的,没有名字的,暂时性的存在,只能本类调用方法,子类也无法调用父类的延展

<span style="font-size:14px;">#import "Student.h"
@interface Student ()//为Student类创建一个私有的方法text
-(void)text;
@end

@implementation Student
-(void)hello;
{
    [self  text];
}

-(void)text
{
    NSLog(@"你好");
}
@end
</span>

外界  [student hello]的时候就会打印出“你好”。但是在外界不能调用text方法,[student text]是不对的。只能在.m文件里边通过self来调用私有方法text。隐藏了内部的实现。

另外在本类的实现文件@implementation之上也可以定义私有方法,私有的静态变量

延展的特点就是定义私有方法

 OC中并没有像Java或者其他语言中提供的私有方法,OC中的私有,可以理解
为相对私有。
OC中私有方法实现有两种方式:
1)方法在.m中实现,不在.h中声明(相对私有)
2)通过匿名类别(延展)实现私有(一般意义上的私有)
@interface MyClass {
// 添加变量
}
-(void)PublicMethod;//公共方法,可以被继承类继承
@end
而在类的.m文件中,采用类别来实现私有方法,具体操作为:
@interface MyClass()//注意(),即定义一个空类别
-(void)PrivateMethod;//在类别中定义私有方法
@end

协议
可以用来声明一大堆方法(不能声明成员变量)
只要某个类遵守了这个协议,就相当于拥有这个协议中的所有方法声明
只要父类遵守了某个协议,就相当于子类也遵守了

协议的编写:
<span style="font-size:14px;">@protocol 协议名称
// 方法声明列表
@end 
</span>

某个类遵守协议:
<span style="font-size:14px;">@interface 类名 : 父类 <协议名称>
@end 
</span>

关键字

@required :必须实现。默认

@optional :选择性的实现

NSObject为基本类根类也为基协议,可以写也可以不写

 协议的声明

在类的起始处使用 @protocol 协议名;(类似于@class)


代理设计模式:

即本身不做实际的事情,而要求其他人去做
例如要卖房子,不是直接销售,二十让中介去帮自己销售
中介就是我们的代理

就是说该对象类有委托方法,实现委托方法(遵守委托协议)需要在其他类中实现,通过其他类对象来代理解决


数据治理是确保数据准确性、可靠性、安全性、可用性和完整性的体系和框架。它定义了组织内部如何使用、存储、保护和共享数据的规则和流程。数据治理的重要性随着数字化转型的加速而日益凸显,它能够提高决策效率、增强业务竞争力、降低风险,并促进业务创新。有效的数据治理体系可以确保数据在采集、存储、处理、共享和保护等环节的合规性和有效性。 数据质量管理是数据治理中的关键环节,它涉及数据质量评估、数据清洗、标准化和监控。高质量的数据能够提升业务决策的准确性,优化业务流程,并挖掘潜在的商业价值。随着大数据和人工智能技术的发展,数据质量管理在确保数据准确性和可靠性方面的作用愈发重要。企业需要建立完善的数据质量管理和校验机制,并通过数据清洗和标准化提高数据质量。 数据安全与隐私保护是数据治理中的另一个重要领域。随着数据量的快速增长和互联网技术的迅速发展,数据安全与隐私保护面临前所未有的挑战。企业需要加强数据安全与隐私保护的法律法规和技术手段,采用数据加密、脱敏和备份恢复等技术手段,以及加强培训和教育,提高安全意识和技能水平。 数据流程管理与监控是确保数据质量、提高数据利用率、保护数据安全的重要环节。有效的数据流程管理可以确保数据流程的合规性和高效性,而实时监控则有助于及时发现并解决潜在问题。企业需要设计合理的数据流程架构,制定详细的数据管理流程规范,并运用数据审计和可视化技术手段进行监控。 数据资产管理是将数据视为组织的重要资产,通过有效的管理和利用,为组织带来经济价值。数据资产管理涵盖数据的整个生命周期,包括数据的创建、存储、处理、共享、使用和保护。它面临的挑战包括数据量的快速增长、数据类型的多样化和数据更新的迅速性。组织需要建立完善的数据管理体系,提高数据处理和分析能力,以应对这些挑战。同时,数据资产的分类与评估、共享与使用规范也是数据资产管理的重要组成部分,需要制定合理的标准和规范,确保数据共享的安全性和隐私保护,以及建立合理的利益分配和权益保障机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值