OC学习笔记13--Foundation框架中常用的struct介绍及使用

本文介绍了Foundation框架中如NSRange、NSPoint、NSSize和NSRect等结构体的定义,并提到了它们的CG等价版本。同时,讨论了用于操作这些结构体的函数,如NSStringFromPoint、NSMakeRange、CGPointMake等,以及如何判断点是否在矩形内的函数CGRectContainsPoint。这些基础知识对于iOS开发至关重要。

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

#import <Foundation/Foundation.h>

int main()
{
	// CGPoint创建几个方式,结果相同
	// {} 创建方式只能声明同时赋值,利用函数创建可以先声明后赋值
	CGPoint p3,p4,p5;
	CGPoint p1={0,0};
	CGPoint p2={.x=0,.y=0};
	p3=CGPointMake(0,0);
	p4=NSMakePoint(0,0);
	// 常量CGPointZero,表示{0,0},
	// 屏幕上表示的话即 最左上角的点
	p5=CGPointZero;
	
	// CGSize创建几个方式,结果相同
	CGSize s3,s4,s5;
	CGSize s1={0,0};
	CGSize s2={.width=0,.height=0};
	s3=CGSizeMake(0,0);
	s4=NSMakeSize(0,0);
	// 常量CGSizeZero,表示{0,0},
	s5=CGSizeZero;
	
	
	// CGRect创建几个方式,结果相同
	CGRect r5,r6;
	CGRect r1={0,0,0,0};
	CGRect r2={{0,0},{0,0}};
	CGRect r3={.origin.x=0,.origin.y=0,.size.width=0,.size.height=0};
	CGRect r4={CGPointZero,CGSizeZero};
	r5=CGRectMake(0,0,0,0);
	r6=NSMakeRect(0,0,0,0);
	
	BOOL b1,b2,b3,b4;
	//比较两个结构体值是否相等
	b1=CGPointEqualToPoint(p1,CGPointZero);
	b2=CGSizeEqualToSize(s1,CGSizeZero);
	b3=CGRectEqualToRect(r1,r4);
	// 判断点是否在矩形内
	b4=CGRectContainsPoint(r4,CGPointZero);
	
	NSLog(@"b1=%d,b2=%d,b3=%d,b4=%d",b1,b2,b3,b4);
	// 调用NSStringFromXXX函数将结构体转成OC字符串输出
	NSLog(@"CGPointZero=%@",NSStringFromPoint(CGPointZero));
	NSLog(@"CGSizeZero=%@",NSStringFromSize(CGSizeZero));
	NSLog(@"r4=%@",NSStringFromRect(r4));
	
	// NSRange无对应CG版本
	NSRange range1=NSMakeRange(0,10);
	NSLog(@"range1=%@",NSStringFromRange(range1));
	
 	return 0 ;	
}




几个常用结构体的定义:
注:基本CG开头的结构体都有一个与之一样定义的NS开头的版本,
两者等价,但出于程序的可移植性考虑,项目中一般使用CG开头的版本,
CG开头版本多平台通用;
typedef struct _NSRange{
unsigned long location,length;

} NSRange;


typedef struct _NSPoint{
double x,y;
} NSPoint;


typedef struct _NSSize{
double width,height;
} NSSize;


typedef struct _NSRect{
NSPoint origin;
NSSize size;
} NSRect;




typedef struct CGPoint{
double x,y;
} CGPoint;


typedef struct CGSize{
double width,height;
} CGSize;


typedef struct CGRect{
CGPoint origin;
CGSize size;
} CGRect;


几个操作这些结构体的常用函数:
注:CG开头的函数实现在CoreGraphics framework中,项目中使用需加入此框架,
但Foundation的主头文件中也有对这些函数的声明(无实现),
因此无需在代码文件中 #import  CoreGraphics的主头文件;
一些NS开头的方法也有对应CG开头的版本,CG版本多平台通用;


//操作CGPoint,CGSize,CGRect这类结构体的函数,函数名命名规律相同

NSString * NSStringFromPoint(CGPoint p); // 转成OC字符串方便打印


// 构造函数
NSRange NSMakeRange(unsigned long location,unsigned long length);
CGPoint NSMakePoint(double x,double y); // 构造CGPoint
CGPoint CGPointMake(double x,double y); //效果同上
CGRect CGRectMake(double x,double y,double width,double heigth); // 构造CGRect


// 比较两个结构体值是否相同
BOOL CGPointEqualToPoint(CGPoint p1,CGPoint p2);


// 判断点是否在矩形内
BOOL CGRectContainsPoint(CGRect rect,CGPoint point);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值