01-Foundation中的结构体

  正如其名,Foundation框架是所有其它iOS框架的基础。

  Foundation框架包含了很多开发中常用的数据类型:

  (1) 结构体

  (2) 枚举

  (3) 类

  要想使用Foundation中的数据类型,包含它的主头文件即可

  #import <Foundation/Foundation.h>

1、Foundation框架包含哪些常用的结构体?

(1) NSRange

(2) NSPointCGPoint

(3) NSSizeCGSize

(4) NSRectCGRect

2、具体介绍这4种结构体

首先,简单复习一下C语言中的结构体:

使用 typedef 对结构体进行重命名(起别名):

1、NSRange

(1) 在Foundation/NSRange.h中对 NSRange 的定义:

由此可知:NSRange结构体有两个成员:location 和 length。

其中:NSUInteger (无符号长整型)

 

(2) NSRange的作用:用来表示事物的一个范围,通常是字符串里的字符范围或者集合里的元素范围

  1> location : 表示该范围的起始位置

  2> length :    表示该范围内所含的元素个数

  比如 "I love objectice-c" 中的 "obj" 可以用 location为7, length为3 的范围来表示。

(3) 创建一个NSRange有3种方式:

  第1种:  直接给成员赋值

  

  第2种: 应用C语言的聚合结构赋值机制

  

  第3种: Foundation框架提供的一个快捷函数NSMakeRange()   

  

  这种最常用,是重点!

练习:

(4)查找某个字符串在str中的范围 使用 rangeOfString

2、NSPointCGPoint

(1) 在Foundation/NSGeometry.h中对NSPoint的定义

 

(2) 在CoreGraphics/CGGeometry.h中对CGPoint的相关定义

 

   

CGFloat 就是 double

(3) NSPointCGPoint 是等价的

(4) NSPoint 和 CGPoint的作用:代表的是平面中的一个点(x, y)

(5) Foundation框架提供了一个NSMakePoint() 创建CGPoint(NSPoint)

  CGPoint point = NSMakePoint(12, 20);

或者

  NSPoint point = NSMakePoint(12, 20);

(6) CoreGraphics框架中也提供了CGPointMake()创建一个CGPoint(NSPoint)  这种最常用,重点!!

  CGPoint point = CGPointMake(10, 20); 

或者

  NSPoint point = CGointMake(10, 20);

练习:

(7)CGPointzero == CGPointMake(0, 0); 即坐标原点。

3、NSSizeCGSize

(1) 在Foundation/NSGometry.h中对NSSize的定义

(2) 在CoreGraphics/CGGeometry.h中对CGSize的相关定义

(3) NSSize 和 CGSize 的作用:用来存储高度和宽度。

(4) 可以利用NSMakeSize()  和 CGSizeMake()创建CGSizeNSSize。

练习:

 

4、NSRectCGRect

(1) 在Foundation/NSGometry.h中对NSRect的定义

(2) 在CoreGraphics/CGGeometry.h中对CGRect的相关定义

(3) NSRect 和 CGRect 的作用:既存储点(x, y) 又存储尺寸(width, height)。

(4) 可以利用NSMakeRect() 和 CGRectMake() 来创建 CGRectNSRect。

本节重点:

(1) 虽然NSPoint、NSSize、NSRect 分别和 CGPoint 、CGSize、CGGRect等价,但是开发中最常用的还是CGPoint 、CGSize、CGRect。

(2) rangeOfString: 的用法。

(3) CGPointMake()  、 CGSizeMake() 、CGRectMake的用法。

(4)将结构体转化为OC字符串

NSStringFromRange:

NSStringFromPoint:

NSStringFromSize:

NSStringFromRect:

原文地址:https://www.cnblogs.com/xdl745464047/p/4004660.html