Foundation框架(1)数值对象与结构体对象-创新互联

  • Foundation框架

    让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册、虚拟空间、营销软件、网站建设、宜丰网站维护、网站推广。

Foundation框架是所有iOS/MacOSX开发的基础框架

最初版本由NextStep公司开发,故其前缀为NS

该框架中主要包含:

    基本数据类型

    常用函数

    结构体及相关操作函数

    枚举类型

    功能丰富的类

头文件:

@import 

  • 数值类型及数值对象

整型:

  类型: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

    ...

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文名称:Foundation框架(1)数值对象与结构体对象-创新互联
新闻来源:http://hbruida.cn/article/csidsc.html