OC中常用的几个结构体基本说明
本帖最后由 Sian 于 2014-3-22 11:08 编辑//
//main.m
//NSStruct
//
//Created by yusian on 14-3-21.
//Copyright (c) 2014年 小龙虾论坛. All rights reserved.
//
#import <Foundation/Foundation.h>
int main()
{
/**************NSRange***************
系统定义:
typedef struct _NSRange {
NSUInteger location;
NSUInteger length;
} NSRange;
*/
// 定义NSRange类型变量并赋值的几种方式:
// 1、直接结构体初始始化赋值
NSRange r1 = {3, 4};
NSRange r2 = {.location = 3, .length = 4};
// 2、定义结构体,通过结构体访问成员变量赋值
NSRange r3;
r3.location = 3;
r3.length = 4;
// 3、通过特定的方法来赋值
NSRange r4 = NSMakeRange(3, 4);
// NSMakeRange实际上是一个实现赋值的函数
//
// NSRange NSMakeRange(NSUInteger loc, NSUInteger len) {
// NSRange r;
// r.location = loc;
// r.length = len;
// return r;
// }
//
/**********NSPoint/CGPoint**********
typedef CGPoint NSPoint;
struct CGPoint {
CGFloat x;
CGFloat y;
};
typedef struct CGPoint CGPoint;
typedef CGFLOAT_TYPE CGFloat;
# define CGFLOAT_TYPE double
从以上可以得出结论:
1、CGPoint == NSPoint
2、CGFloat == double
3、NSPoint即为结构体struct { double x;double y;};
4、该结构体表示一个二维坐标点
*/
// 1、直接结构体赋值方法
CGPoint p1 = {10, 15};
NSPoint p2 = {10, 15};
CGPoint p3 = {.x = 10, .y = 15};
NSPoint p4;
p4.x = 10;
p4.y = 15;
// 2、使用特定函数赋值
CGPoint p5 = NSMakePoint(5, 10);
NSPoint p6 = CGPointMake(4, 19);
CGPoint p7 = CGPointZero;
NSPoint p8 = NSZeroPoint;
// 3、将结构体转换换字符串
NSString * sfp = NSStringFromPoint(p1);
// 4、其他函数:比较两个点是否处于同一位置
BOOL b1 = CGPointEqualToPoint(p1, p2);
/**********NSSize/CGSize**********
typedef CGSize NSSize;
struct CGSize {
CGFloat width;
CGFloat height;
};
typedef struct CGSize CGSize;
typedef CGFLOAT_TYPE CGFloat;
# define CGFLOAT_TYPE double
从以上可以得出结论:
1、CGSize == NSSize
2、CGFloat == double
3、NSSize即为结构体struct { double width; double height;};
4、该结构体表示一对长宽值
*/
// 1、直接结构体赋值方法
CGSize s1 = {10, 15};
NSSize s2 = {.width = 10, .height = 20};
CGSize s3;
s3.width = 10;
s3.height = 5;
// 2、使用特定函数赋值
CGSize s4 = CGSizeMake(12, 10);
NSSize s5 = NSMakeSize(12, 10);
CGSize s6 = CGSizeZero;
NSSize s7 = NSZeroSize;
// 3、将结构体转换换字符串
NSString * sfs = NSStringFromSize(s1);
// 4、其他函数:比较两个长宽体是否相等
BOOL b2 = CGSizeEqualToSize(s1, s2);
/**********NSRect/CGRect**********
typedef CGRect NSRect;
struct CGRect {
CGPoint origin;
CGSize size;
};
typedef struct CGRect CGRect;
从以上可以得出结论:
1、NSRect == CGRect
2、CGRect为CGPoint与CGSize的集合
3、该结构体表示的是某个物件的位置与大小
*/
// 1、直接结构体赋值方法
NSRect rec1 = { {0, 0}, {20, 10} };
CGRect rec2 = { {0, 0}, {20, 10} };
NSRect rec3;
rec3.origin.x = 0;
rec3.origin.y = 0;
rec3.size.width = 16;
rec3.size.height = 9;
NSRect rec4 = {p1, s1};
// 2、使用特定函数赋值
NSRect rec5 = NSMakeRect(0, 0, 20, 10);
CGRect rec6 = CGRectMake(0, 0, 20, 10);
NSRect rec7 = {CGPointZero, CGSizeZero};
//该函数实现为:
//
// NSRect NSMakeRect(CGFloat x, CGFloat y, CGFloat w, CGFloat h) {
// NSRect r;
// r.origin.x = x;
// r.origin.y = y;
// r.size.width = w;
// r.size.height = h;
// return r;
// }
// 3、将结构体转换换字符串
NSString * sfr = NSStringFromRect(rec1);
// 4、其他函数
// 比较两个物件是否完全重合
BOOL b3 = CGRectEqualToRect(rec1, rec2);
// 比较某个点是否处于某个长宽体中
BOOL b4 = CGRectContainsPoint(rec1, p1);
return 0;
}
页:
[1]