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 ...
 
随机推荐
- Spring的IoC容器注入的类型
			
Spring除了可以注入Bean实例外,还可以注入其他数据类型. 注入基本数据类型 xml配置文件中的init-method="init"属性是取得Bean实例之后,输入属性值后自 ...
 - Metasploit辅助模块
			
msf > show auxiliary Auxiliary ========= Name Di ...
 - poj 2187 Beauty Contest (凸包暴力求最远点对+旋转卡壳)
			
链接:http://poj.org/problem?id=2187 Description Bessie, Farmer John's prize cow, has just won first pl ...
 - mac 配置jdk maven
			
1.从oracle下载jdk 链接:http://www.oracle.com/technetwork/java/javase/downloads/index.html 然后安装jdk 2.下载Mav ...
 - FLASH CC 2015 CANVAS (三) flash中写JS调用html中JS的函数,变量
			
注意 此贴 为个人边“开荒”边写,所以不保证就是最佳做法,也难免有错误! 正式教程会在后续开始更新 首先我们在HTML里的JS里面添加几行代码 我们在FLASH中新建一个元件,并拖入到舞台,在属性面板 ...
 - 一致性 hash 算法( consistent hashing )
			
consistent hashing 算法早在 1997 年就在论文 Consistent hashing and random trees 中被提出,目前在cache 系统中应用越来越广泛: 1 基 ...
 - javascript练习----复选框全选,全不选,反选
			
第一种方式: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
 - nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器
			
参照网址: [1]http://blog.csdn.net/redstarofsleep/article/details/45092147 [2]HLS介绍:http://www.cnblogs.co ...
 - [转载] TCP协议缺陷不完全记录
			
原文: http://www.blogjava.net/yongboy/archive/2015/05/07/424917.html tcp是一个非常复杂并且古老的协议, 之前教科书上将的很多东西应用 ...
 - windos多线程编程
			
随机数滚动发生器 #include <stdio.h> #include <Windows.h> #include <ctime> #include <pro ...