Object-C类目、延展

Object-C类目、延展

类目
定义:为现有工程中的类和系统类添加新的方法和属性。
作用:在类目中添加的方法和属性在原类中添加方法和属性是一样的,都能够被类和类的子类调用,这样可以快速便利地维护和开发项目。
note:如何在类目中为原类添加新的属性?
创建一个Tool类

Tool.h文件

#import <Foundation/Foundation.h>

@interface Tool : NSObject

@property (nonatomic,strong)NSString *property1 ;

-(void)function1 ;

@end

#pragma mark ----------类目---------

@interface Tool (ToolExtension)

@property (nonatomic,strong)NSString *property2 ;

-(void)function2 ;

@end

Tool.m文件

#import "Tool.h"
#import "objc/runtime.h"
@implementation Tool (ToolExtension)

#pragma  mark ---------合成类目中的属性--------------
-(void)setProperty2:(NSString *)property2
{
    objc_setAssociatedObject(self, @selector(property2), property2, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}

-(NSString *)property2
{
    return  objc_getAssociatedObject(self, @selector(property2));
}

-(void)function2
{
    NSLog(@"function2");
}

@end

延展
定义:为自定义类添加私有方法

#import "Tool.h"
#import "objc/runtime.h"

@interface Tool ()

-(void)privateFunction;

@end

@implementation Tool

-(void)function1
{
    NSLog(@"function1 ");
}

#pragma mark extension
-(void)privateFunction
{
    NSLog(@"我是延展,我是私有方法");
}

@end

@implementation Tool (ToolExtension)

#pragma  mark ---------合成类目中的属性--------------
-(void)setProperty2:(NSString *)property2
{
    objc_setAssociatedObject(self, @selector(property2), property2, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}

-(NSString *)property2
{
    return  objc_getAssociatedObject(self, @selector(property2));
}

-(void)function2
{
    NSLog(@"function2");
}
@end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值