iOS之扩展(extension)的使用

本文详细介绍了Objective-C中的类扩展概念及其使用方法。通过实例展示了如何利用类扩展为现有类添加私有属性和方法,以及如何在类的实现文件中实现这些新增功能。

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

1、扩展与类别相似,相当于匿名类别,定义扩展的语法格式如下:

@interface   已有类    ()

{

//实例变量

}

//方法定义

...

@end

2、与类别的区别:

类别通常有单独的.h和.m文件,扩展则用于临时对某个类的借口进行扩展,类实现部分同时实现类接口部分定义的方法和扩展中定义的方法,即扩展只有单独的.h文件,而没有.m文件,扩展中定义的属性和方法,在类的.m中实现

3、实例

1)类的头文件FKCar.h

#import <Foundation/Foundation.h>

// 定义类的接口部分
@interface FKCar : NSObject
@property (nonatomic , copy) NSString* brand;
@property (nonatomic , copy) NSString* model;
- (void) drive;
@end
2)类扩展的头文件FCCar+dirve.h

#import "FKCar.h"

// 定义FKCar的扩展
@interface FKCar ()
@property (nonatomic , copy) NSString* color;
- (void) drive:(NSString*)owner; 
@end
3)类的实现文件FKCar.m

#import "FKCar+drive.h"

// 为FKCar提供实现部分
@implementation FKCar
@synthesize brand;
@synthesize model;
@synthesize color;
- (void) drive;
{
	NSLog(@"%@汽车正在路上奔驰" , self);
}
- (void) drive:(NSString*) owner
{
	NSLog(@"%@正驾驶%@汽车在路上奔驰" , owner , self);
}
- (NSString*) description
{
	return [NSString stringWithFormat:@"<FK[brand=%@,model=%@,color=%@]>"
		, self.brand , self.model ,self.color];
}
@end
4)使用

#import <Foundation/Foundation.h>
#import "FKCar+drive.h"

int main(int argc , char * argv[])
{
	@autoreleasepool{
		// 创建一个FKCar对象
		FKCar* car = [[FKCar alloc] init];
		// 使用点语法为car对象的属性赋值
		car.brand = @"宝马";
		car.model = @"X5";
		car.color = @"黑色";
		// 调用car的方法
		[car drive];
		[car drive:@"孙悟空"];	
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值