工作在Fundation框架下1——Start Developing iOS Apps Today——从今天开始开发IOS(IOS7版)系列源文档翻译(十五)

当你开始编写代码为您的应用程序,你会发现有很多Objective-C框架,你可以利用的。特别重要的是基础框架,为所有应用程序提供基本的服务。 Foundation框架包括代表基本数据类型,如字符串和数字值类,以及用于存储其他对象的集合类。你会依赖于价值和收藏类来编写很多代码,为您的todolist的应用程序。


值对象

Foundation框架为您提供了生成字符串的值对象,二进制数据,日期和时间,数字和其他值类。
值对象是一个对象,它封装了原始值(一个C数据类型) ,并提供相关的增值服务。你经常遇到的值对象作为方法和功能,你的应用程序调用的参数和返回值。不同部位的框架,甚至是不同的框架,可以通过传递的值对象交换数据。
在Foundation框架的值对象的例子有:
NSString和NSMutableString
NSData和NSMutableData
NSDate
NSNumber
NSValue
因为值对象代表标量值,你可以用它们在集合和任何其他地方都需要的对象。值对象有超过它们封装原始类型的优势:他们让你的包裹价值简单而有效地执行某些操作。 NSString类,例如,具有用于搜索和替换子方法,用于将字符串写入到文件或(优选)的URL ,并用于构造文件系统的路径。
您从原始类型(然后可能通过它在方法参数)的数据创建一个值对象。在你的代码,你以后访问的对象封装的数据。在一个NSNumber类提供了这种方法的明显的例子。
int n = 5; // 分配给原始类型值
NSNumber *numberObject = [NSNumber numberWithInt:n]; // 从原始类型创建值对象
int y = [numberObject intValue]; // Encapsulated value obtained from value object (y == n)
最值类通过声明两个初始化函数和类工厂方法创建它们的实例。类工厂方法实现了类作为一种简便的一步到位的客户端,结合分配和初始化,并返回所创建的对象。例如,NSString类声明一个String类的方法分配和初始化类的新实例,并将其返回到你的代码。
NSString *string = [NSString string];
除了创建值对象,并让您存取其封装的值,很多值的类提供了简单的操作,如对象的比较方法。

字符串

Objective-C中支持相同的约定指定字符串一样C:单字符用单引号括和字符的字符串是用双引号包围。但Objective-C框架通常不使用C字符串。相反,他们使用NSString对象。 
NSString类提供的字符串对象封装,提供诸如优点内置的内存管理用于存储任意长度的字符串,对于不同的字符编码??(尤其是Unicode)的支持,以及实用程序字符串格式化。因为您通常使用这样的字符串,Objective-C语言提供了从常量创建NSString对象的速记符号。要使用这个NSString的文字,只是前面一个双引号字符串与at符号(@),如下面的例子:
// Create the string "My String" plus carriage return.
NSString *myString = @"My String\n";
// Create the formatted string "1 String".
NSString *anotherString = [NSString stringWithFormat:@"%d %@", 1, @"String"];
// Create an Objective-C string from a C string.
NSString *fromCString = [NSString stringWithCString:"A C string" encoding:NSUTF8StringEncoding];

数字

Objective-C中提供了用于创建的NSNumber对象,无需调用初始化函数或类的工厂方法来创建此类对象的速记符号。简单的数值与at符号(@)之前和任意跟随它用一个值类型的指标。例如,要创建一个NSNumber对象封装一个整数值和一个双精度值,你可以写如下:
NSNumber *myIntValue    = @32;
NSNumber *myDoubleValue = @3.22346432;
你甚至可以使用NSNumber的文字来创建封装布尔和字符值。
NSNumber *myBoolValue = @YES;
NSNumber *myCharValue = @‘V‘;
您可以创建一个代表无符号整数,长整数,long long整数的NSNumber对象,并通过附加的字母U,L,LL,和F,分别向记谱值float值。例如,要创建一个封装浮点值一个NSNumber对象,你可以编写以下代码:
NSNumber *myFloatValue = @3.2F

集合对象

在Objective-C代码中的大多数集合对象是基本的集合类, NSArray的,的NSSet和NSDictionary中的一个实例。这些类用于管理对象组,所以你要添加到一个集合中的任何项目必须是一个Objective-C类的一个实例。如果你需要添加一个标值,必须首先创建一个合适的NSNumber或实例的NSValue来代表它。
要添加到集合中的任何对象将至少只要集合保持活动状态持续下去。这是因为集合类使用强引用来跟踪他们的内容。除了保持其内容的轨道,每个集合类可以很容易地执行某些任务,如枚举,访问特定的项目,或者找出一个特定的对象是否是集合的一部分。
在NSArray的,的NSSet和NSDictionary中类的内容被设置在创建。因为它们不能随着时间的推移发生变化,他们是所谓的不可变的。每个人也有一个子类,它是可变的,让您随意添加或删除对象。不同类型的集合组织其包含的对象以独特的方式:
1.NSArray和NSMutableArray里,数组是对象的有序集合。您可以指定它的位置(即其索引)数组中的访问对象。在数组的第一个元素的索引为0  。
2.NSSet和NSMutableSet -A组的无序集合对象,每个对象只发生一次。您通常通过施加测试或筛选的对象集访问的一组对象。
3.NSDictionary中和NSMutableDictionary - 字典将其条目存储为键 - 值对,关键是一个唯一的标识符,通常是一个字符串,其值是你要存储的对象。您可以通过指定的键访问该对象。

数组

一个数组(NSArray)被用来表示对象的有序列表。唯一的要求是,每个项目是一个Objective-C的对象有一个为每个对象没有要求是同一类的一个实例。 
维持秩序的数组中,每个元素都被存储在一个从零开始的索引。


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。