IOS-Foundation框架

这些东西,等用的时候查资料就行,用的多了,自然就记住了,大概过一下

Foundation 框架

它是IOS应用程序开发的基础,常用的框架有80多个,而 foundation 是他们所有的基础,提供了许多基本的对象类和数据类型,比如数字,字符串,数组,集合,字典,处理日期时间,自动化内存管理,文件,归档,处理几何数据结构等。它为所有应用程序提供基本的数据服务,

Foundation和界面无关,其前缀为NS 。

在Foundation中有些类仅被MAC OS支持而不被IOS支持。

在 mac ox x 中 Cocoa 总的指 Foundation 框架和 application kit 框架,而 cocoa touch 是指 foundation 和 uikit 框架。

Foundation 里常用的结构体:

NSRange(location length)用来表示范围,分多种情况

NSPoint \ CGPoint(开发中常用后者)

NSSize \ CGSize

NSRect \ CGRect (CGPint CGSize)

NSRange原型

typedef struct _NSRange {
    NSUInteger location;
    NSUInteger length;
} NSRange;

这是 NSRange 结构体的内部结构的形式,两个成员,一个长度,一个位置。不需要再和 c 一样使用 struct 关键字,且成员的数据类型是 NSUInteger

typedef unsigned long NSUInteger;

属于无符号长整型类型的替代写法,就知道它就是一个整型的正数而已。

使用 NSRange 结构体表示范围,比如:

    //{1, 2, 3, 4, 5}
    //表示3,4,5的范围,location=2,length=3

从0开始计数,第2个位置开始,长度为3。

字符串里 love 的范围,从0开始计数第2个位置,长度为4

@"i love oc";

下面这两种写法不推荐(前者可读性太差,后者太冗长)

//NSRange r1 = {2, 4}; // 不用
//NSRange r2 = {.location = 2, .length = 4};// 不用

要掌握下面这个写法,上面的两个不使用

NSRange r3 = NSMakeRange(2, 4); // 掌握

那么在工程中,经常用到的一个查找字符串位置的方法

    NSString *str = @"i love oc";

    // 查找某个字符串在str中的范围,很常用的一个方法,重要!
    // 如果找不到,length=0,location=NSNotFound==-1
    NSRange range = [str rangeOfString:@"java"];
    NSLog(@"loc = %ld, length=%ld", range.location, range.length);

因为,location 是无符号 long 类型,那么-1打印出来会是一个很大的正数。当然,如果最高位按照负数表示了,也就是NSNotFound按照(带符号)整数打印,那么就是-1。

NSPoint \ CGPoint

点结构体

struct CGPoint {
  CGFloat x;
  CGFloat y;
};
typedef struct CGPoint CGPoint;

还有:

typedef CGPoint NSPoint;
typedef struct _NSPoint {
    CGFloat x;
    CGFloat y;
} NSPoint;

继续查看:

 typedef CGFLOAT_TYPE CGFloat;

继续查看:

#define CGFLOAT_TYPE double

本质就是 double 类型

类似 NSRange 结构体

CGPoint p1 = NSMakePoint(10, 10);
NSPoint p2 = CGPointMake(20, 20);// 最常用

NSSize \ CGSize

表示 UI 高度,宽度尺寸的结构体,联想记忆。

    NSSize s1 = CGSizeMake(100, 50);
    NSSize s2 = NSMakeSize(100, 50);
    CGSize s3 = NSMakeSize(200, 60);

CGRect 综合的表示点和尺寸

    CGRect r1 = CGRectMake(0, 0, 100, 50);
    CGRect r2 = { {0, 0}, {100, 90}};
    CGRect r3 = {p1, s2};

使用CGPointZero等的前提是添加CoreGraphics框架

 CGRect r4 = {CGPointZero, CGSizeMake(100, 90)};

表示原点

CGPointZero == CGPointMake(0, 0);

将结构体转为字符串

    //NSString *str = NSStringFromPoint(p1);

    //NSString *str = NSStringFromSize(s3);

    NSString *str = NSStringFromRect(r1);

    NSLog(@"%@", str);

    // NSLog(@"x=%f, y=%f, width=%f, height=%f", r1.origin.x, r1.origin.y, r1.size.width, r1.size.height);

使用这些CGPointEqualToPoint、CGRectContainsPoint等函数的前提是添加CoreGraphics框架

比较两个点是否相同(x、y)

BOOL b = CGPointEqualToPoint(CGPointMake(10, 10), CGPointMake(10, 10));

比较两个矩形是否相同

CGRectEqualToRect(<#CGRect rect1#>, <#CGRect rect2#>)

比较两个位置是否相同

CGSizeEqualToSize(<#CGSize size1#>, <#CGSize size2#>)

x (50, 150) y (40 , 90),看这个矩形里,是否包含某点

 BOOL b2 = CGRectContainsPoint(CGRectMake(50, 40, 100, 50), CGPointMake(60, 45));

 NSLog(@"%d", b2);
时间: 2024-10-20 03:50:20

IOS-Foundation框架的相关文章

iOS Foundation 框架中 Mutable 的类们

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. Mutable 对于那些不能直接对其中内容进行更改的类来说,是一种扩展方式,象数值这类的,不涉及到指针的,就没有 Mutable 子类,可能是因为

iOS Foundation 框架 224 篇相关文档分类整理

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 截至 2014-05-02 ,苹果官网 Foundation 框架相关文档共计 224 篇,分类如下: Foundation 框架概述文档:常量.

iOS Foundation 框架概述文档:常量、数据类型、框架、函数、公布声明

iOS Foundation 框架概述文档:常量.数据类型.框架.函数.公布声明 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的漂亮人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. Foundation 框架概述文档:常量.数据类型.框架.函数.

iOS Foundation 框架基类

太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的漂亮人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 基类 Title Topic Date NSObject Class Reference Data Types & Collections

iOS UIKit 框架 346 篇文档分类整理 - 预告

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 当前正在进行的是 "iOS Foundation 框架 224 篇相关文档分类整理",量很大,但会根据实际开发中的使用频繁程序

IOS开发系列—Objective-C之Foundation框架(转)

概述 我们前面的章节中就一直新建Cocoa Class,那么Cocoa到底是什么,它和我们前面以及后面要讲的内容到底有什么关系呢?Objective-C开发中经常用到NSObject,那么这个对象到底是谁?它为什么又出现在Objective-C中间呢?今天我们将揭开这层面纱,重点分析在IOS开发中一个重要的框架Foundation,今天的主要内容有: Foundation概述 常用结构体 日期 字符串 数组 字典 装箱和拆箱 反射 拷贝 文件操作 归档 Foundation概述 为什么前面说的内

IOS开发系列—Objective-C之Foundation框架

概述 我们前面的章节中就一直新建Cocoa Class,那么Cocoa到底是什么,它和我们前面以及后面要讲的内容到底有什么关系呢?Objective-C开发中经常用到NSObject,那么这个对象到底是谁?它为什么又出现在Objective-C中间呢?今天我们将揭开这层面纱,重点分析在IOS开发中一个重要的框架Foundation,今天的主要内容有: Foundation概述 常用结构体 日期 字符串 数组 字典 装箱和拆箱 反射 拷贝 文件操作 归档 Foundation概述 为什么前面说的内

学iOS开发(一)——实现一款App之Foundation框架的使用

当你着手为你的应用编写代码的时候,你会发现有许多可供使用的Objective-C的框架类,其中尤其重要的就是基础框架类,它为平台所有的应用提供基础服务.基础框架类中包括了表示字符串和数字等基本数据类型的值类(value classes),也有用来存储其他对象的集合类(collection classes).你将会依赖值类和集合类为你的ToDoList app编写大量代码. 值对象(Value Objects) Foundation框架提供了生成字符串.二进制数据.日期和时间.数字以及其他值对象的

IOS学习笔记--Objective-C之Foundation框架

概述 原文地址:http://www.cnblogs.com/kenshincui/p/3885689.html 我们前面的章节中就一直新建Cocoa Class,那么Cocoa到底是什么,它和我们前面以及后面要讲的内容到底有什么关系呢?Objective-C开发中经常用到NSObject,那么 这个对象到底是谁?它为什么又出现在Objective-C中间呢?今天我们将揭开这层面纱,重点分析在IOS开发中一个重要的框架 Foundation,今天的主要内容有: Foundation概述 常用结构

IOS之Core Foundation框架和Cocoa Foundation框架的区别

Core Foundation框架 (CoreFoundation.framework) 是一组C语言接口,它们为iOS应用程序提供基本数据管理和服务功能.下面列举该框架支持进行管理的数据以及可提供的服务: 群体数据类型 (数组.集合等) 程序包 字符串管理 日期和时间管理 原始数据块管理 偏好管理 URL及数据流操作 线程和RunLoop 端口和soket通讯 Core Foundation框架和Foundation框架紧密相关,它们为相同功能提供接口,但Foundation框架提供Objec