OC中经常用到的结构体
NSRange
第一个结构体NSRange,
typedef struct _NSRange{
NSUInteger location;
NSUInteger length;
} NSRange;
它用来表示相关事物的范围,通常是字符串里的字符范围和数组里的元素范围。
location存放该范围的起始位置,而length则是该范围内所含元素的个数。
比如字符串"Objective-c lol hello"中,"lol'可以用location为12,length为3来表示。
location还可以用NSNotFound这个值没有范围,比如不包含某个元素。
NSRange有三种创建方式。
1 直接给字段赋值
NSRange range;
range.location = 12;
range.length = 3;
2 应用C语言的聚合结构赋值机制
NSRange range = {12,3};
或者NSRange range = {.location = 12,.length = 3};
3 Cocoa提供的一个快捷函数NSMakeRange();
NSRange range = NSMakeRange (12,3);
使用NSMakeRange的好处是可以在任何能够使用函数的地方使用它,例如在方法调用其作为参数进行传递。
转换为字符串
NSString *str = NSStringFromRect(range);
NSLog(@"%@",str);
获取范围
NSString *str = @"他喜欢玩adc中的 vn和 jinkesi";
NSString *adc = @"adc";
NSRange rang = [str rangeOfString:adc];
NSLog(@"location:%lu", (unsigned long)rang.location);
NSLog(@"length:%lu", (unsigned long)rang.length);
结果为:
location:4
length:3
NSPoint 和CGPoint
经常会看到用来处理图形的数据类型,它们的名称带有CG前缀,这些类型是由Core Graphics框架提供的。
NSPoint 在Foundation/NSGeometry.h中定义
typedef CGPoint NSPoint;
在CoreGraphics/CGGeometry.h中定义
struct CGPoint{
CGFloat x;
CGFloat y;
}
typedef struct CGPoint NSPoint;
NSPoint 和CGPoint是等价的,它们代表平面中的一个坐标(x,y)。
创建方式
1 赋值
NSPoint np ;
np.x = 12;
np.y = 55;
2 快捷函数
NSPoint np = NSMakePoint(11,22);
NSPoint np1 = CGPointMake(11,22);
转换为字符串
NSString *str = NSStringFromRect(np);
NSLog(@"%@",str);
NSSize和CGSize
NSSize 在Foundation/NSGeometry.h中定义
typedef CGSize NSSize;
在CoreGraphics/CGGeometry.h中定义
struct CGSize{
CGFloat width;
CGFloat height;
}
typedef struct CGSize NSSize;
NSSize 和CGSize是等价的,它们用来存储长度和高度。
创建方式
1 赋值
NSSize ns ;
ns.width = 50;
ns.height = 100;
2 快捷函数
NSSize ns = NSMakeSize(50,100);
NSSize ns1 = CGSizeMake(50,100);
将NSSize类型转换为NSString ,
NSString *str = NSStringFromSize(ns);
NSLog(@"%@",str);
NSRect 和CGRect
NSRect 在Foundation/NSGeometry.h中定义
typedef CGRect NSRect;
在CoreGraphics/CGGeometry.h中定义
struct CGRect{
CGPoint origin;
CGSize size;
}
typedef struct CGRect NSRect;
NSRect 和CGRect是等价的,它包含坐标和大小。
创建
NSRect rt;
rt.origin.x = 10;
rt.origin.y = 12;
rt.size.width = 100;
rt.size.height = 100;
快捷函数
rt = NSRectMake(10,12,100,100);
或者rt = CGMakeRect(10,12,100,100);
NSString *str = NSStringFromRect(rt);
NSLog(@"%@",str);