Objective-C:Foundation框架-结构体
在Foundation中定义了很多常用结构体类型来简化我们的日常开发,这些结构体完全采用Objective-C定义,和我们自己定义的结构体没有任何区别,之所以由框架为我们提供完全是为了简化我们的开发。常用的结构体有NSRange、NSPoint、NSSize、NSRect等。
先复习下结构体的两种定义方式:
void test() {
// 定义了Date这种结构体类型
struct Date {
int year;
int month;
int day;
};
// 定义结构体变量
struct Date d = {, , };
d.day = ;
}
void test1() {
typedef struct Date {
int year;
int month;
int day;
} MyDate;
MyDate d = {, , };
}
1.NSRange
这个结构体用来表示一个事物的范围,通常是字符串里的字符范围或者集合里的元素范围。通常有三种方式创建NSRange变量。
- 第一种:直接给成员赋值
NSRange range;
range.location = 2;
range.length = 5;
- 第二种:应用C语言的聚合结构赋值机制
NSRange range = {2, 5};
或者,
NSRange range = {.location = 2, .length = 3};
- 第三种:Foundation框架提供的一个快捷函数NSMakeRange(推荐使用)
void range() {
NSRange range = NSMakeRange(, );
NSLog(@"location:%zi", range.location);
NSLog(@"length:%zi", range.length);
NSString *str = NSStringFromRange(range);
NSLog(@"%@", str);
// NSLog(@"%@", range); 错误的做法,%@代表着OC对象
}
备注:OC中的方法和函数略有区别:方法是要通过类名(+)或对象(-)来调用的。
2.NSPoint
NSPoint和CGPoint是等价的,表示平面中的一个点。其创建方法与NSRange类似:
void point() {
// NSPoint p;
CGPoint p;
p.x = ;
p.y = ;
p = NSMakePoint(, );
// 常见的方式
p = CGPointMake(, );
NSString *str = NSStringFromPoint(p);
NSLog(@"%@", str);
}
3.NSSize
NSSize和CGSize等价,用来存储宽度和高度。其创建方式类似:
void size() {
CGSize size; // NSSize size;
size.width = ;
size.height = ;
size = NSMakeSize(, );
size = CGSizeMake(, );
NSString *str = NSStringFromSize(size);
NSLog(@"%@", str);
}
4.NSRect
NSRect与CGRect等价,用来存储矩形,其内部又包含了两个结构体:CGPoint和CGSize。其创建方式类似:
void rect() {
NSRect rect; // CGRect rect;
rect.origin.x = ;
rect.origin.y = ;
rect.size.width = ;
rect.size.height = ;
rect = NSMakeRect(, , , );
rect = CGRectMake(, , , );
NSString *str = NSStringFromRect(rect);
NSLog(@"%@", str);
}
Objective-C:Foundation框架-结构体的更多相关文章
- foundation框架—结构体
Foundation框架—结构体 一.基本知识 Foundation—基础框架.框架中包含了很多开发中常用的数据类型,如结构体,枚举,类等,是其他ios框架的基础. 如果要想使用foundation框 ...
- 李洪强iOS开发之Foundation框架—结构体
Foundation框架—结构体 一.基本知识 Foundation—基础框架.框架中包含了很多开发中常用的数据类型,如结构体,枚举,类等,是其他ios框架的基础. 如果要想使用foundation框 ...
- Foundation框架 - 结构体
一.基础知识 如果要想使用 Foundation 框架的数据类型,那么包含它的主头文件就可以了.即 #import <Foundation/Foundation.h> 补充: Core F ...
- OC Foundation框架—结构体
一.基本知识 Foundation—基础框架.框架中包含了很多开发中常用的数据类型,如结构体,枚举,类等,是其他ios框架的基础. 如果要想使用foundation框架中的数据类型,那么包含它的主头文 ...
- 黑马程序员——OC语言Foundation框架 结构体
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)结构体 NSRange(location length) NSPoi ...
- Objective - c Foundation 框架详解2
Objective - c Foundation 框架详解2 Collection Agency Cocoa provides a number of collection classes such ...
- 「Foundation」结构体
一.基本知识 Foundation—基础框架.框架中包含了很多开发中常用的数据类型,如结构体,枚举,类等,是其他ios框架的基础. 如果要想使用foundation框架中的数据类型,那么包含它的主头文 ...
- iOS-Foundation框架—结构体(转载)
一.基本知识 Foundation—基础框架.框架中包含了很多开发中常用的数据类型,如结构体,枚举,类等,是其他ios框架的基础. 如果要想使用foundation框架中的数据类型,那么包含它的主头文 ...
- 八、Foundation -常用结构体
一.NSRange 在foundation/NSRange.h中对NSRange的定义 typedef struct _NSRange{ NSUInteger location; NSUInteger ...
随机推荐
- Intellij IDEA中使用Struts2
据说struts2中有很多的漏洞, 不过作为学习我也就用了吧, 因为书上面是按着这个讲的呀. 难怪官网上也没有struts2.2.1的版本的下载. 1. 下载struts2.2.1 ga版本 2. 新 ...
- poj 3304线段与直线相交
http://poj.org/problem?id=3304 Segments Time Limit: 1000MS Memory Limit: 65536K Total Submissions: ...
- Spark运行在eclipse_使用PyDev和pyspark
一直想在eclipse上编写Spark程序,但是仿佛是因为spark的安装包提供了PS D:\software\spark-1.6.1-bin-hadoop2.6> .\bin\spark-su ...
- SQL:with ties
摘自: http://www.cnblogs.com/huanghai223/archive/2010/10/26/1861961.html “从100万条记录中的得到成绩最高的记录”.看到这个题目, ...
- C#垃圾回收机制(GC)
GC的前世与今生 虽然本文是以.net作为目标来讲述GC,但是GC的概念并非才诞生不久.早在1958年,由鼎鼎大名的图林奖得主John McCarthy所实现的Lisp语言就已经提供了GC的功能,这是 ...
- XML约束——DTD约束
参考: 方立勋老师的讲课视频. 什么是XML约束 •在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,这称之为XML约束. 为什么需要XML约束 常用的约束技术 •XML DTD • ...
- Java I/O 文件加锁,压缩
文件加锁: 文件加锁机制允许我们同步访问某个作为共享资源的文件. public class Test { public static void main(String[] args) throws I ...
- eclipse格式化代码
在Eclipse下安装.使用Jalopy方法 http://hi.baidu.com/zdz8207/item/c2972e172ad3efdcbf9042d6 http://www.cnblogs. ...
- Websocket————错误总结
websocket 一.需要注意的是,js建立连接处完整的js代码要执行完成退出后才会真正发起建立连接请求,如果在此之前发送消息则会报错如下: InvalidStateError: An attemp ...
- windows volume related concepts
Volume --- 一个volume就是一个分区. 在该“物理硬盘”上创建一个或多个分区,再创建文件系统,才可以得到一个VOLUME.此时VOLUME相对于主机是一个逻辑设备. https://m ...