5 2.Foundation1-常用结构体
NSRange
1)、在Foundation/NSRange.h中对NSRanger的定义
Typedef struct _NSRange{
NSUInteger location;
NSUInteger length;
} NSRange;
//typedef unsigned long NSUInteger
2)、这个结构体用来表示事物的一个范围,通常是字符串里的字符范围或者集合里的元素范围。
3)、location表示该范围的起始位置
4)、length表示该范围内所含的元素个数
5)、比如“I love objective-c”中的“obj”可以用location为7,length为3的范围来表示
6)、
列一:
main.m
// // main.m // Foundation1 - 结构体 // // Created by qwz on 13-12-9. // Copyright (c) 2013年 renhe. All rights reserved. //
#import <Foundation/Foundation.h>
void test(){ //定义了Date这个结构体类型 struct Date{ int year; int month; int day; }; //定义结构变量 struct Date d = {2013, 4, 5}; d.day = 6; }
void test1(){ typedefstruct Date{ int year; int month; int day; } myDate;
myDate d = {2013, 4, 5}; }
void range(){ NSRange range = NSMakeRange(8, 10); NSLog(@"location:%zi", range.location); NSLog(@"length:%zi", range.length);
NSString *str = NSStringFromRange(range); NSLog(@"%@", str); //NSLog(@"%@", range); 错误做法,%@代表着OC对象 }
int main(int argc, const char * argv[]) {
@autoreleasepool { range(); } return 0; }
|
运行结果:
2013-12-11 09:37:48.757 OC10-内存管理2-set方法的内存管理[319:403] location:8
2013-12-11 09:37:48.762 OC10-内存管理2-set方法的内存管理[319:403] length:10
2013-12-11 09:37:48.763 OC10-内存管理2-set方法的内存管理[319:403] {8, 10}
NSPoint
1)、在Foundation/NSGeometry.h中对NSPoint的定义 typedef CGPoint NSPoint;
2)、在CoreGraphics/CGGeometry.h中对CGPoint的相关定义
Struct CGPoint{
CGFloat x;
CGFloat y;
};
Typedef struct CGPoint CGPoint;
// #define CGFLOAT_TYPE double
// typedef CGFLOAT_TYPE CGFloat;
3)、NSPoint 和 CGPoint是等价的
4)、这个结构体代表的是平面中的一个点(x, y)
列二:
main.m
// // main.m // Foundation1 - 结构体 // // Created by qwz on 13-12-9. // Copyright (c) 2013年 renhe. All rights reserved. //
#import <Foundation/Foundation.h>
void point(){ //NSPoint p; CGPoint p; p.x = 1; p.y = 10;
p = NSMakePoint(10, 9); //常见的方式 p = CGPointMake(8, 9);
NSString *str = NSStringFromPoint(p); NSLog(@"%@", str); }
int main(int argc, const char * argv[]) {
@autoreleasepool point(); } return 0; }
|
NSSize
1)、在Foundation/NSGeometry.h中对NSSize的定义 typedef CGSize NSSize;
2)、在CoreGraphics/CGGeometry.h中对CGSize的相关定义
3)、这个结构体用来存储宽度和高度
4)、可以利用NSMakeSize()和CGSizeMake()创建CGSize
例三:
main.m
// // main.m // Foundation1 - 结构体 // // Created by qwz on 13-12-9. // Copyright (c) 2013年 renhe. All rights reserved. //
#import <Foundation/Foundation.h>
void size(){ NSSize size; size.width = 100; size.height = 90;
size = NSMakeSize(90, 80); size = CGSizeMake(10, 8);
NSString *str = NSStringFromSize(size); NSLog(@"%@", str);
}
int main(int argc, const char * argv[]) {
@autoreleasepool { size(); } return 0; } |
NSRect
1) 在Foundation/NSGeometry.h中对NSRect的定义 typedef CGRect NSRect;
2) 在CoreGraphics/CGGeometry.h中对CGRect的相关定义
Struct CGRect{
CGPoint origin; //矩形左上角坐标
CGSize size; //矩形的宽度和高度
};
typedef struct CGRect CGRect;
3) 这个结构体用来存储宽度和高度
4)可以利用NSMakeRect() 和 CGRectMake() 创建CGRect
main.m
// // main.m // Foundation1 - 结构体 // // Created by qwz on 13-12-9. // Copyright (c) 2013年 renhe. All rights reserved. // #import <Foundation/Foundation.h>
void rect(){ NSRect rect; // CGRect rect; rect.origin.x = 10; rect.origin.y = 11;
rect.size.width = 100; rect.size.height = 90;
rect = NSMakeRect(10, 10, 80, 80); rect = CGRectMake(8, 9, 10, 12);
NSString *str = NSStringFromRect(rect); NSLog(@"%@", str);
}
int main(int argc, const char * argv[]) { @autoreleasepool { rect(); } return 0; } |