首页 > 编程知识 正文

oc类是程序的基本组成单元

时间:2023-05-03 19:24:47 阅读:261462 作者:2859

关于学习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来打印一定要先使用特定的方法将其转换为字符串对象再打印

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。