Foundation框架
Foundation框架是所有iOS/MacOSX开发的基础框架
最初版本由NextStep公司开发,故其前缀为NS
该框架中主要包含:
基本数据类型
常用函数
结构体及相关操作函数
枚举类型
功能丰富的类
头文件:
@import <Foundation/Foundation.h>
数值类型及数值对象
整型:
类型:NSInteger、NSUInteger
宏定义:NSIntegerMax、NSIntegerMin、NSUIntegerMax
浮点类型:(实型)
类型:CGFloat
宏定义:CGFLOAT_MAX、CGFLOAT_MIN
...
这些数值类型并不是Objective-C的对象,也就是说不能进行很多面向对象的操作
数值对象:
NSNumber将各种数值类型数据封装成Objective-C对象
字面值初始化:
利用@关键字
NSNumber *num1 = @10; NSNumber *num2 = @YES; NSNumber *num3 = @'A'; NSNumber *num4 = @3.14; int age = 10; NSNumber *num5 = @(age);
数值对象的构造方法:
+ (NSNumber *)numberWithBool:(BOOL)value + (NSNumber *)numberWithChar:(char)value + (NSNumber *)numberWithDouble:(double)value + (NSNumber *)numberWithFloat:(float)value + (NSNumber *)numberWithInteger:(NSInteger)value + (NSNumber *)numberWithLong:(long)value ...
几何数据结构体
此部分介绍的结构体,不是类,用描述一些几何数据
NSRange表示范围:
typedef struct _NSRange { NSUInteger location; //表示起始范围 NSUInteger length; //表示范围长度 } NSRange;
NSRange r1 = { 2, 4}; //不推荐 NSRange r2 = { .location=2, .length=4 }; //不推荐 NSRange r3 = NSMakeRange(2, 4); //推荐使用这种方式
CGSize表示二维尺寸:
struct CGSize { CGFloat width; //表示宽度 CGFloat height; //表示高度 }; typedef struct CGSize CGSize;
CGSize s1 = CGSizeMake(40, 60); NSLog(@"%@", NSStringFromCGSize(s1));
CGPoint表示位置
struct CGPoint { CGFloat x; CGFloat y; }; typedef struct CGPoint CGPoint;
CGPoint p1 = CGPointMake(10, 10); NSLog(@"%@", NSStringFromCGPoint(p1));
CGRect表示矩形的尺寸及位置
struct CGRect { CGPoint origin; CGSize size; }; typedef struct CGRect CGRect;
CGRect r1 = CGRectMake(0, 0, 100, 50); NSLog(@"%@", NSStringFromCGRect(r1));
其他常用函数
//比较两个点是否相同 bool CGPointEqualToPoint(CGPoint point1, CGPoint point2); //比较两个尺寸是否相同 bool CGSizeEqualToSize(CGSize size1, CGSize size2); //比价两个Rect是否相同 bool CGRectEqualToRect(CGRect rect1, CGRect rect2); //判断Rect中是否包含某个点 bool CGRectContainsPoint(CGRect rect, CGPoint point);
这些几何数据类型,都有表示0的常量
CGPointZero CGSizeZero CGRectZero
几何数据类型封装成对象
数值类型可以封装到NSNumber对象中
这些常用的结构体可以封装到NSValue对象中,NSValue是NSNumber的父类
+ (NSValue *)valueWithRange:(NSRange)range + (NSValue *)valueWithCGPoint:(CGPoint)point + (NSValue *)valueWithCGSize:(CGSize)size + (NSValue *)valueWithCGRect:(CGRect)rect @property(readonly) NSRange rangeValue - (CGPoint)CGPointValue - (CGSize)CGSizeValue - (CGRect)CGRectValue
NSValue还可以封装:
形变结构体CGAffineTransform
边距结构体UIEdgeInsets
3D形变结构体CATransform3D
经纬度结构体MKCoordinate
...
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。