IOS-Foundation里常用的结构体:

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

在Foundation中定义了很多常用结构体类型来简化我们的日常开发

NSRange(location length)用来表示范围,分多种情况

NSPoint \ CGPoint(开发中常用后者)

NSSize \ CGSize

NSRect \ CGRect (CGPint CGSize)

NSRange原型

typedef struct_NSRange {

NSUInteger location;

NSUInteger length;

} NSRange;

这是 NSRange 结构体的内部结构的形式,两个成员,一个长度,一个位置。不需要再和 c 一样使用 struct 关键字,且成员的数据类型是 NSUInteger

typedef unsigned long NSUInteger;

属于无符号长整型类型的替代写法,就知道它就是一个整型的正数而已。

使用 NSRange 结构体表示范围,比如:

//{1, 2, 3, 4, 5}

//表示3,4,5的范围,location=2,length=3

从0开始计数,第2个位置开始,长度为3。

字符串里 love 的范围,从0开始计数第2个位置,长度为4

@"i love oc";

下面这两种写法不推荐(前者可读性太差,后者太冗长)

//NSRange r1 = {2, 4}; // 不用

//NSRange r2 = {.location = 2, .length = 4};// 不用

要掌握下面这个写法,上面的两个不使用

NSRange r3 = NSMakeRange(2, 4); // 掌握

在工程中,经常用到的一个查找字符串位置的方法

NSString *str = @"i love oc";

// 查找某个字符串在str中的范围,很常用的一个方法,重要!

// 如果找不到,length=0,location=NSNotFound==-1

NSRange range = [str rangeOfString:@"java"];

NSLog(@"loc = %ld, length=%ld", range.location, range.length);

因为,location 是无符号 long 类型,那么-1打印出来会是一个很大的正数。当然,如果最高位按照负数表示了,也就是NSNotFound按照(带符号)整数打印,那么就是-1。

NSPoint \ CGPoint

点结构体

structCGPoint {

CGFloat x;

CGFloat y;

};

typedef struct CGPoint CGPoint;

还有:

typedef CGPoint NSPoint;

typedef struct_NSPoint {

CGFloat x;

CGFloat y;

} NSPoint;

继续查看:

typedef CGFLOAT_TYPE CGFloat;

继续查看:

#define CGFLOAT_TYPE double

本质就是 double 类型

类似 NSRange 结构体

CGPoint p1 = NSMakePoint(10, 10);

NSPoint p2 = CGPointMake(20, 20);// 最常用

NSSize \ CGSize

表示高度,宽度尺寸的结构体,联想记忆。

NSSize s1 = CGSizeMake(100, 50);

NSSize s2 = NSMakeSize(100, 50);

CGSize s3 = NSMakeSize(200, 60);

CGRect 表示矩形尺寸

CGRect r1 = CGRectMake(0, 0, 100, 50);

CGRect r2 = { {0, 0}, {100, 90}};

CGRect r3 = {p1, s2};

可以看到对于常用结构体在Foundation框架中都有一个对应的make方法进行创建,这也是我们日后比较常用的操作;

而且与之对应的还都有一个NSStringFromXX方法来进行字符串转换,方便我们调试。上面也提到NSSize其实就是CGSize,NSRect其实就是CGRect。

注意:

UI是iOS的UI库,用objective-c封装的

NS是objc的基础库

CG,CF等是比较底层的C语言的库

可以理解UIFont就是用objc封装过的CGFont,用起来方便些

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航