您的位置:首页 > 职场人生

黑马程序员-11-Foundation(常用的结构体)

2014-10-07 00:00 309 查看
摘要: NSRange,NSPoint\CGPoint,NSSize\CGSize,NSPoint\CGPoint,NSRect\CGRect的使用

---------------------- Java培训.Net培训Android培训IOS培训、期待与您交流! ----------------------

1. Foundtaion 框架简介

创建一个OC对象我们必须继承 NSObject, 而NSObject是依赖于Foundation框架的,除此之外框架中由许多类、方法、函数、文档按照一定的逻辑组织起来的集合,方便我们开发;而且开发中常用到的对象集合,如数组、字典、集合;其他功能包括内存管理,处理基础文件系统、存储对象等,因此Foundation框架是IOS开发中必不可少的基础框架之一。

2. Foundation常用的结构体

常用的结构体 :

NSRange(location length)

NSPoint\CGPoint

NSSize\CGSize

NSRect\CGRect (CGPint CGSize)

a. NSRange

(1) NSRange的原型 :

typedef struct _NSRange {
NSUInteger location;                            // 存储元素的位置
NSUInteger length;                              // 描述元素的长度
} NSRange;


(2) NSRange的初始化方式 :

#import <Foundation/Foundation.h>

int main()
{
/* 使用C语言的结构体初始化方式,但在OC开发中一般不用
NSRange r1 = {2,4};
NSRange r2 = {.length = 4, .location = 2};
*/
NSRange r3 = NSMakeRange(2,4);                    // 开发中一般使用这种方式
return 0;
}


(3) 使用例子 :

#import <Foundation/Foundation.h>
/*
查找某个字符串在str中的范围
如果找到使用NSRange来表示他的存储位置和长度
如果找不到,length=0,location=NSNotFound==-1
- (NSRange)rangeOfString:(NSString *)aString;
*/
int main()
{
NSSting *str = @"hello oc";
NSRange r = [str rangeOfString:@"java"];

NSLog(@"location = %ld , length = %ld",r.location,r.length);                //  location = -1 , length = 0
return 0;
}


b. NSPoint\CGPoint

(1) NSPoint\CGPoint原型 :

// CGPoint
struct CGPoint {
CGFloat x;
CGFloat y;
};
typedef struct CGPoint CGPoint;

// NSPoint
typedef CGPoint NSPoint ;


(2) NSPoint\CGPoint的初始化方式 :

#import <Foundation/Foundation.h>

int main()
{
/* 使用C语言的结构体初始化方式,但在OC开发中一般不用
NSPoint p1 = {2,4};
// CGPoint p1 = {2,4};

NSPoint p2 = {.y= 4, .x = 2};
// CGPoint p2 = {.y= 4, .x = 2};
*/

CGPoint p3 = CGPointMake(2,4);                                                        // 开发中一般使用这种方式
// NSPoint p3 = NSMakeNSPoint(2,4);
return 0;
}


(3) 使用例子 :

#import <Foundation/Foundation.h>

// 使用这些CGPointEqualToPoint、CGPointZero的前提是添加CoreGraphics框架
#import <CoreGraphics/CoreGraphics.h>

int main()
{
// 比较两个点是否重合
BOOL b = CGPointEqualToPoint(CGPointMake(10,20),CGPointMake(10,20));                        // b = YES

// 表示原点
// CGPointZero == CGPointMake(0,0)
BOOL b = CGPointEqualToPoint(CGPointZero ,CGPointMake(0,0));                                // b = YES

// 将结构体转化为字符串
NSString *str = NSStringFromPoint(CGPointMake(10,20));
NSLog(@"p = %@",str);                                                                       //  p = {10, 20}
return 0;
}


c. NSSize\CGSize

(1) NSSize\CGSize 原型 :
// CGSize
struct CGSize {
CGFloat width;
CGFloat height;
};
typedef struct CGSize CGSize;

// NSSize
typedef CGSize NSSize;


(2) NSSize\CGSize 的初始化方式 :

#import <Foundation/Foundation.h>

int main()
{
NSSize s1 = CGSizeMake(100, 50);                                                           // 开发中一般使用这种
NSSize s2 = NSMakeSize(100, 50);
CGSize s3 = NSMakeSize(200, 60);
return 0;
}


(3) 使用例子 :

#import <Foundation/Foundation.h>

// 使用这些CGSizeEqualToSize的前提是添加CoreGraphics框架
#import <CoreGraphics/CoreGraphics.h>

int main()
{
BOOL b = CGSizeEqualToSize(CGSizeMake(100,200),CGSizeMake(100,200));                       // b = YES
NSSize s = CGSizeMake(100,200);
NSString *str = NSStringFromSize(s);
NSLog(@"size : %@",s);                                                                    // size : {100, 200}
return 0;
}


d. NSPoint\CGPoint

(1) NSPoint\CGPoint原型 :
// CGPoint
struct CGPoint {
CGFloat x;
CGFloat y;
};
typedef struct CGPoint CGPoint;

// NSPoint
typedef CGPoint NSPoint ;


(2) NSPoint\CGPoint的初始化方式 :

#import <Foundation/Foundation.h>

int main()
{
/* 使用C语言的结构体初始化方式,但在OC开发中一般不用
NSPoint p1 = {2,4};
// CGPoint p1 = {2,4};

NSPoint p2 = {.y= 4, .x = 2};
// CGPoint p2 = {.y= 4, .x = 2};
*/

CGPoint p3 = CGPointMake(2,4);                                                        // 开发中一般使用这种方式
// NSPoint p3 = NSMakeNSPoint(2,4);
return 0;
}


(3) 使用例子 :

#import <Foundation/Foundation.h>

// 使用这些CGPointEqualToPoint、CGPointZero的前提是添加CoreGraphics框架
#import <CoreGraphics/CoreGraphics.h>

int main()
{
// 比较两个点是否重合
BOOL b = CGPointEqualToPoint(CGPointMake(10,20),CGPointMake(10,20));                        // b = YES

// 表示原点
// CGPointZero == CGPointMake(0,0)
BOOL b = CGPointEqualToPoint(CGPointZero ,CGPointMake(0,0));                                // b = YES

// 将结构体转化为字符串
NSString *str = NSStringFromPoint(CGPointMake(10,20));
NSLog(@"p = %@",str);                                                                       //  p = {10, 20}
return 0;
}


e. NSRect\CGRect

(1) NSRect\CGRect 原型 :
// CGRect
struct CGRect {
CGPoint origin;
CGSize size;
};
typedef struct CGRect CGRect;

// NSRect
typedef CGRect NSRect;


(2) NSRect\CGRect 的初始化方式 :

#import <Foundation/Foundation.h>

int main()
{
// 两个对焦点确定一个矩形
CGRect r1 = NSMakeRect(0, 0, 10, 20);

NSRect r2 = CGRectMake(0, 0, 10, 20);                                                         // 开发中一般使用这种方式
return 0;
}


(3) 使用例子 :

#import <Foundation/Foundation.h>

// 使用这些CGSizeEqualToSize的前提是添加CoreGraphics框架
#import <CoreGraphics/CoreGraphics.h>

int main()
{
NSRect r2 = CGRectMake(0, 0, 10, 20);
NSString *str = NSStringFromRect(r1);
NSLog(@"rect = %@",str);                                                                 //  rect = {{0, 0}, {10, 20}}
return 0;
}


---------------------- Java培训.Net培训Android培训IOS培训、期待与您交流! ----------------------
详情请查看:http://edu.csdn.net/heima
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: