TA的每日心情 | 汗 2024-10-15 10:05 |
---|
签到天数: 372 天 [LV.9]以坛为家II
|
本帖最后由 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;
- }
复制代码 |
|