黑马程序员技术交流社区
标题:
OC学习笔记13--Foundation框架中常用的struct介绍及使用
[打印本页]
作者:
wowthe1st
时间:
2015-8-4 22:05
标题:
OC学习笔记13--Foundation框架中常用的struct介绍及使用
时候有java和C基础同学迅速了解OC
#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);
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2