在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框架-结构体的更多相关文章

  1. foundation框架—结构体

    Foundation框架—结构体 一.基本知识 Foundation—基础框架.框架中包含了很多开发中常用的数据类型,如结构体,枚举,类等,是其他ios框架的基础. 如果要想使用foundation框 ...

  2. 李洪强iOS开发之Foundation框架—结构体

    Foundation框架—结构体 一.基本知识 Foundation—基础框架.框架中包含了很多开发中常用的数据类型,如结构体,枚举,类等,是其他ios框架的基础. 如果要想使用foundation框 ...

  3. Foundation框架 - 结构体

    一.基础知识 如果要想使用 Foundation 框架的数据类型,那么包含它的主头文件就可以了.即 #import <Foundation/Foundation.h> 补充: Core F ...

  4. OC Foundation框架—结构体

    一.基本知识 Foundation—基础框架.框架中包含了很多开发中常用的数据类型,如结构体,枚举,类等,是其他ios框架的基础. 如果要想使用foundation框架中的数据类型,那么包含它的主头文 ...

  5. 黑马程序员——OC语言Foundation框架 结构体

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)结构体 NSRange(location length) NSPoi ...

  6. Objective - c Foundation 框架详解2

    Objective - c  Foundation 框架详解2 Collection Agency Cocoa provides a number of collection classes such ...

  7. 「Foundation」结构体

    一.基本知识 Foundation—基础框架.框架中包含了很多开发中常用的数据类型,如结构体,枚举,类等,是其他ios框架的基础. 如果要想使用foundation框架中的数据类型,那么包含它的主头文 ...

  8. iOS-Foundation框架—结构体(转载)

    一.基本知识 Foundation—基础框架.框架中包含了很多开发中常用的数据类型,如结构体,枚举,类等,是其他ios框架的基础. 如果要想使用foundation框架中的数据类型,那么包含它的主头文 ...

  9. 八、Foundation -常用结构体

    一.NSRange 在foundation/NSRange.h中对NSRange的定义 typedef struct _NSRange{ NSUInteger location; NSUInteger ...

随机推荐

  1. sqlmap基本命令

    ./sqlmap.py –h //查看帮助信息./sqlmap.py –u “http://www.anti-x.net/inject.asp?id=injecthere” //get注入./sqlm ...

  2. JAVA查找--[二分查找]

    package com.array; public class BinaryFind { /* * 项目名称:二分查找 ; * 项目要求:用JAVA对数组进行查找,并运用快速查找算法; * 作者:Se ...

  3. observer观察者模式

    观察者模式(有时又被称为发布-订阅Subscribe>模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态上发生变化时,会通知所有观察者对象,让 ...

  4. js中两个对象的比较

    代码取自于underscore.js 1.8.3的isEqual函数. 做了一些小小的修改,主要是Function的比较修改. 自己也加了一些代码解读. <!DOCTYPE html> & ...

  5. CSS中应用position的absolute和relative的属性制作浮动层

    我的浮动层结构大概如下: <div id="father"> <div id="son"> </div> </div& ...

  6. offsetLeft与style.left区别

    在javascript中经常遇到style.left和offsetLeft,那么它们有什么区别呢?今天我们来分析下 offsetLeft:获取当前元素相对于父元素的左侧偏移量,比如该元素设置为rela ...

  7. 手动配置WCF宿主的.config文件遇到的几种错误

    今天尝试用控制台应用程序作为WCF宿主,遇到几个问题,这几个问题虽然都不难,但寻找解决方案相当费时费力,做记录. WCF标准的配置文件为: <system.serviceModel>    ...

  8. 线程高级应用-心得8-java5线程并发库中同步集合Collections工具类的应用及案例分析

    1.  HashSet与HashMap的联系与区别? 区别:前者是单列后者是双列,就是hashmap有键有值,hashset只有键: 联系:HashSet的底层就是HashMap,可以参考HashSe ...

  9. Bootstrap段落(正文文本)

    一.Bootstrap段落特点 段落是排版中另一个重要元素之一.在Bootstrap中为文本设置了一个全局的文本样式(这里所说的文本是指正文文本): 1.全局文本字号为14px(font-size). ...

  10. Illegal mix of collations (big5_chinese_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation 'like'

    解释: 非法的混合排序规则(big5_chinese_ci)和(utf8_general_ci)操作“like”. 原本是单个字段查询数据的,现在是把所有的字段用一个搜索框来查询. 主要出问题是下列这 ...