定义和理解变量
所有的现代编程语言,包括Objective-C中,有变量的概念。变量是简单的别名,在存储器中的位置。每个变量具有以下属性:
1,一种数据类型,它可以是一个原始的,如整数,或者是一个对象
2,名称
3:值。
你并不总是需要设置的变量值,但是你需要指定它的类型和它的名字。下面是你需要知道的关于编写任何典型的iOS应用程序时的几个数据类型:
Mutable Versus Immutable可变vs不可变
如果数据类型是可变的,你可以,如果它被初始化后更改。例如,你可以在一个可变数组改变其中一个值,或添加或删除值。相反,你必须提供值,当你初始化一个不可改变数据类型,并不能增加它们,删除它们,或在以后更改它们。不可改变的类型是有用因为它们是更有效的,并且因为它们可以防止错误时的值是为了在整个数据的寿命保持不变。
NSInteger和NSUInteger
这种类型的变量可以保存的积分值,如10,20,等等。NSInteger的类型允许负值以及正值,但NSUInteger数据类型是无符号类型,因此将U在其名称中。请记住,无符号编程语言在数字的上下文语总是意味着数不得为负。只有签名的数据类型可以容纳负数。
CGFloat
持有带小数点浮点变数,如1.31或2.40。
的NSString
允许你存储的字符的字符串。稍后我们会看到这样的例子。
的NSNumber
允许你存储的数字为对象。
ID
id类型的变量可以指向任何类型的任何对象。这些被称为无类型的对象。每当你想从一个地方传递一个对象到另一个对象,但不希望指定其类型不管什么原因,你可以把这个数据类型的优势。
NSDictionary中和的NSMutableDictionary
这是哈希表的可变和不可变的变体。哈希表可以让你存储一个密钥和一个值相关联的键,比如一个名为phone_num主要有参照与之相关联的密钥读取的值的值05552487700.。
的NSArray和NSMutableArray的
对象的不可变的和可变的数组。数组是项目的有序集合。例如,您可能必须要在内存中存储10的字符串对象。数组可能是一个好去处。
NSSet,的NSMutableSet,NSOrderedSet,NSMutableOrderedSet
集是一样的,因为它们可以容纳一系列的对象阵列,但它们从阵列的区别在于它们包含唯一的对象。阵列可以容纳相同的对象多倍,但一组可以包含一个对象的一个实例。我鼓励你去学习数组和集合之间的区别,并适当地使用它们。
NSData和NSMutableData
可变和不可变容器的任何数据。这些数据类型是完美的,当你要读取一个文件的内容,例如,到内存中。
一些我们讲的数据类型是原始的,有些是类。你只需要记住哪个是哪个。例如,NSInteger的是一种基本数据类型,但NSString的是一类,所以对象可以被实例化它。 Objective-C中,如C和C+ +,具有指针的概念。指针是存储在那里的真实数据被存储在存储器地址的数据类型。你现在应该知道指针类表示使用星号标志:
NSString *myString = @"Objective-C is great!";
因此,当你要分配一个字符串类型的NSString在Objective-C中的变量,你只需要在数据存储到类型的NSString的指针*。但是,如果你是要一个浮点值存储到一个变量,你不会将它指定为指针,因为该变量的数据类型不是类:
/* Set the myFloat variable to PI */ CGFloat myFloat = M_PI;
如果你想有一个指向浮点变量,你可以这样做,如下所示:
/* Set the myFloat variable to PI /*创建一个指向myFloat变量的指针变量*/*/ CGFloat myFloat = M_PI; /* Create a pointer variable that points to the myFloat variable */ CGFloat *pointerFloat = &myFloat;
从原来的浮动获取的数据是一个简单的解引用(myFloat),而通过该指针获得的值需要使用星号(* pointerFloat)的。该指针可以在某些情况下,例如当你调用一个函数,设置一个浮点参数的值是有用的,你要检索的函数返回后的新值。
回去上课,我们可能不得不谈一点关于类的东西迷失在翻译之前,让我们做下一个。