OC_Fundation框架定义的一些结构的基本使用

关于学习Fundation结构的笔记:

首先我们来回顾一下定义结构体类型
typedef struct name{
    int a;
    .....
}name;

由上面我们可以看出这个结构体的定义是:
----------------------------------
struct name{
    int a;
    .....
}
----------------------------------
所以简化后就是:
typedef 类型定义 name;
------>>>下面所讲的都是一些Foundation框架已经定义好的结构体

1、用来表示一个事物的范围

定义原型

由原型我们可以看出

NSRange实际上就是一个包含了两个NSUInteger类型变量的结构体

而NSUInteger的原型实际就是unsigned long


NSRange:
location-->表示范围的起始位置
length---->表示范围内元素的个数
NSRange ran;
ran.location = 1;
ran.length = 2;
可以看出NSRange实际上就是一个结构体

NSRange ran = NAMakeRange(3,4);
实际上NSMakeRange()是一个函数他负责创建并初始化结构

由上面我们得知NSRange是一个结构体并不是一个对象,因此不能直接使用NSLog()来打印
事实上我们可以使用NSStringFromRange(NSRange)将一个NSRange结构体转换为一个字符串对象,然后使用NSLog(@"%@", range)来打印
注意:在NSLog里面"%@"只能打印对象 

2、用来表示一个点

原型定义

由原型我们可以看出NSPoint与CGPoint共享同一个结构体,而这个结构体实际上

是一个保存了两个类型为CGFloat的变量,以保存一点,而CGFloat实际上就是

一个double

NSPoint:
NSPoint p;
p.x = 10;
p.y = 11;
快速创建
NSPoint p = NSMakePoint(10,11);
同样的要转行成字符串也可以使用函数
NSStringFromPoint()

其实还有一个结构CGPoint和NSPoint是同一个结构,两个结构的对象可以互换,没有任何区别,只是他们不属于同一个框架

3、用来表示一个尺寸,长度以及宽度

原型定义

由原型可以看出NSSize与CGSize共享同一个结构体,其余NSPoint基本类似,不同的只是

它保存的是一个事物的尺寸而非一个点的坐标

NSSize:
NSSize si;
si.width = 1;
si.height = 2;
同样的快速创建
NSSize siz = NSMakeSize(1,2);
同样的转换为字符串
NSString str = NSStringFromSize(NSSize);

4用来表示一个事物的位置和尺寸

原型定义

根据原型定义可以看出NSRect与CGRect共享同一个结构体,其中保存了

一个CGPoint和一个CGSize

NSRect:
例如表示一个矩形的一个角的位置以及它的长度和宽度
NSRect rect;
rect.origin.x = 1;    //起始位置x
rect.origin.y = 2;    //起始位置y
rect.size.width = 10; //宽度
rect.size.height = 10 //长度
同样的快速创建
NSRect rect = NSMakeRect(1,2,3,4);
同样的转字符串
NSString str = NStringFromRect(NSRect)

 

一点总结:

这些所谓的结构体实际上就是C语言使用typedef所提前定义的结构体,大家可以参照平时使用C语言的结构体的经验来使用,而他的一些快速定义的方法实际就是在函数内部先创建,再初始化,然后返回,千万注意他不是对象,不能直接使用NSLog来打印一定要先使用特定的方法将其转换为字符串对象再打印

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值