
Objective-C
JackLu经纬
这个作者很懒,什么都没留下…
展开
-
数据类型和运算符(基本数据类型)
基本数据类型整形1. short int (简称short):short型整数在内存中通常占16位,取值范围是$$ -32768(-2^15)~32767(2^15 -1)。2. int: int型整数在内存里占32位,取值范围是-2147483648(-2^31)~2147483647(2^31-1)。3. long int(简称long):各个平台上的占用空间不同。4. long long原创 2015-12-23 19:41:59 · 879 阅读 · 0 评论 -
C语言特性(函数与指针)
函数与指针用函数指针变量调用函数当定义函数之后,C语言允许定义一个指针变量来指向该函数,接下来就可通过该指针变量来调用函数了。 使用函数指针变量的步骤如下1.定义函数指针变量,语法格式为: 函数返回值类型(* 指针变量名)();2.将任何已有的函数赋值给函数指针变量。3.使用函数指针变量来调用函数。语法格式为: (*函数指针变量)(参数);返回指针的函数当函数返回指针时需要注意原创 2015-12-23 19:52:58 · 402 阅读 · 0 评论 -
C语言特性(指针数组和指向指针变量的指针)
指针数组和指向指针变量的指针指针数组与main()函数形参声明指针数组与声明普通数组的语法类似,其语法格式如下:类型 * 数组变量[长度];指向指针变量的指针指针变量也是变量,指针变量也需要保存在内存中,那么指针变量也有自己的存储地址,如果再次定义变量来保存指针变量的存储地址,这个地址就是指向指针变量的指针。 声明指向指针变量的指针的语法格式为:类型** 变量名;int** pt;原创 2015-12-23 19:53:21 · 337 阅读 · 0 评论 -
C语言特性(结构体)
结构体定义结构体定义结构体类型的语法格式如下:struct 结构体类型名{ //成员列表}定义结构体类型之后,接下来就可利用该结构体类型来定义变量。利用结构体类型定义变量有两种形式。 1、先定义结构体类型,再定义结构体变量struct 结构体名 变量名;例://定义point结构体类型struct point{ int x; int y;};//使用结构体类型定原创 2015-12-23 19:54:34 · 658 阅读 · 0 评论 -
C语言特性(块)
块块(Block)是Objective-C对ANSI C所做的扩展,使用块可以更好地简化Objective-C编程,而且Objective-C的很多API都依赖于块块的基本语法定义块的语法格式如下:^[块返回值类型] (形参类型1 形参1,形参类型2 形参2, ...){ //块执行体}从上面的语法格式可以看出,定义块的语法非常像定义一个函数,但只是定义一个匿名函数。定义块与定义函数的语原创 2015-12-23 19:55:04 · 696 阅读 · 0 评论 -
面向对象(类和对象)
类和对象定义类面向对象的程序设计过程中有两个重要概念:类(class)和对象(object,也称为实例,instance),其中类是某一批对象的抽象,可以把类理解成某种概念;对象才是一个具体存在的实体。 Objective-C中定义类需要分为两个步骤接口部分:定义该类包含的成员变量和方法。实现部分:为该类的方法提供实现。类接口部分的语法 声明方法的语法格式 方法类型标识符:该标识符要么是+,要原创 2015-12-23 21:24:17 · 434 阅读 · 0 评论 -
面向对象(方法详解)
方法详解方法的所有属性一旦将一个方法定义在某个类的类体内,如果这个方法使用了+标识符,则这个方法就属于这个类;如果使用了-标识符,则这个方法就属于这个类的实例。 Objective-C语言中方法的所属性主要体现在如下几方面。1.方法不能独立定义,只能在类体里定义。2.从逻辑意义上来看,方法要么属于该类本身,要么属于该类的一个对象。3.不能独立调用方法,调用方法需要使用类或对象作为调用者。形参个原创 2016-01-12 10:28:18 · 403 阅读 · 0 评论 -
面向对象(成员变量)
面向对象成员变量成员变量及其运行机制模拟类变量单例模式Singleton模式面向对象(成员变量)变量可以分为三大类:成员变量、局部变量和全局变量。成员变量及其运行机制成员变量指的是在类接口部分或类实现部分定义的变量。Objective-C的成员变量都是实例变量,Objective-C并不支持真正的类变量。 只要实例存在,程序就可以访问该实例的实例变量,在程序中访问实例变量使用如下语法:实例-原创 2016-01-12 13:42:26 · 569 阅读 · 0 评论 -
面向对象(键值编码(KVC)与键值监听(KVO))
面向对象(键值编码(KVC)与键值监听(KVO))简单的KVC最基本的KVC由NSKeyValueCoding协议提供支持,最基本的操作属性的两个方法如下 - setValue:属性值forKey:属性名 :为指定属性设置值。 - valueForKey:属性名:获取指定属性值在KVC编程方式中,无论调用setValue:forKey:方法,还是调用valueForKey:方法,都是通过NSS原创 2016-01-13 16:31:17 · 403 阅读 · 0 评论 -
面向对象(隐藏和封装)
面向对象隐藏和封装理解封装使用访问控制符合成存取方法面向对象(隐藏和封装)理解封装封装是面向对象程序语言对客观世界的模拟,在客观世界中对象的成员变量(用于描述对象的状态数据)都被隐藏在对象内部,外部无法直接操作和修改。 对一个类或对象实现良好的封装,可以实现以下目的。 - 隐藏类的实现细节 - 让使用者只能通过事先预定的方法来访问数据,从而可以在该方法里加入控制逻辑,限制对成员变量的不合理原创 2016-01-12 15:33:10 · 3396 阅读 · 0 评论 -
面向对象(对象初始化)
面向对象对象初始化为对象分配空间初始化方法与对象初始化便利的初始化方法面向对象(对象初始化)为对象分配空间[类名 alloc];初始化方法与对象初始化使用NSObject提供的init方法虽然可以完成初始化,但由于它只是完成最基本的初始化,因此对象的所有成员变量依然为0。 重写init方法,可以加入任意的自定义处理代码对属性执行初始化例:在.h文件中定义属性@property (nona原创 2016-01-14 13:32:16 · 589 阅读 · 0 评论 -
C语言特性(指针与数组)
指针与数组指向数组的指针变量简单来讲就是数组变量保存了数组的首地址。指针运算目前,指针变量存在如下几种赋值方式1.p = &a;:将一个已有变量的内存地址赋值给指针变量p。2.p = &arr[i];:将某个数组元素的内存地址赋值给指针变量p。3.p = arr:将arr数组的首地址赋值给指针变量p。4.p = pt:将指针变量pt中保存的地址赋值给指针变量p。指针除了可以被赋值之外,还支持如原创 2015-12-23 19:52:31 · 392 阅读 · 0 评论 -
C语言特性(指针)
指针指针的概念简单来说,变量的内存地址就是该变量的指针;而用于保存内存地址(指针)的变量就是指针变量指针变量及其基本用法定义指针变量的语法格式如下:类型 * 变量名;关于指针,还有以下两个最基本的运算符。1.&:取地址运算符。这是一个单目运算符,后面通常紧跟一个变量,该运算符用于读取该变量所在的内存地址。2.*:取变量运算符。这也是一个单目运算符,后面通常紧跟一个指针变量,该运算符用于读取该指针变原创 2015-12-23 19:52:04 · 514 阅读 · 0 评论 -
数据类型和运算符(标识符和变量)
标识符和变量分隔符1. 分号(;)2. 花括号({}) 代表代码块,一段代码在逻辑上是一个整体3. 方括号([]) 主要作用是访问数组元素,通常紧跟数组变量名,而方括号里指定的希望访问的数组元素的索引。4. 圆括号(()) 在定义函数时,必须使用圆括号来包含所有形参声明,调用函数时也必须使用圆括号来实参值。不仅如此,圆括号还可以将表达式中的某个部分括成一个整体,保证这个部分优先计算。原创 2015-12-23 19:45:20 · 361 阅读 · 0 评论 -
数据类型和运算符(类型转换)
类型转换自动类型转换 自动转换规则如下: 1、把整数(包括字符型)的变量和值赋值给浮点型变量,不会有太大的变化。 2、把浮点型的变量和值赋值给整型(包括字符型)变量,数值的小数部分会被舍弃。 3、当把取值范围大的变量和值赋值给取值范围小的变量时,可能发生溢出。强制类型转换例: float f = (float) a/b;表达式类型的自动提升注: 当一个算术表达式中包含多原创 2015-12-23 19:46:21 · 266 阅读 · 0 评论 -
数据类型和运算符(运算符)
运算符算术运算符Objective-C 支持所有的基本算术运算符 /:除法运算符。除法运算符有些特殊,如果除法运算符的两个操作数都是整数类型,则计算结果也是整数,就是将自然数除法的结果断取整。 %:求余运算符。它要求运算符两边的操作数必须是整数,他的计算结果是使用第一个操作数来除以第二个操作数,得到一个整除的结果后,剩下的值就是余数 ++:自加运算符。这是一个单目运算符,运算符既可以出现在操原创 2015-12-23 19:47:25 · 989 阅读 · 0 评论 -
流程控制与数组(分支结构)
分支结构if条件语句一般有如下三种形式。第一种形式: if(expression){ statements... }第二种形式: if(expression){ statements... }else{ statements... }第三种形式: if(expression){ statements... }else if(){ statements...原创 2015-12-23 19:47:54 · 340 阅读 · 0 评论 -
流程控制与数组(控制循环结构)
控制循环结构使用break结束循环 break用于完全结束一个循环,跳出循环体。使用continue结束本次循环 continue与break的功能有些类似,区别在于continue知识中止本次循环,接着开始下一次循环;而break则是完全中止循环本身。使用return结束循环 return关键字并不是专门用于结束循环的,return的功能是结束一个函数。原创 2015-12-23 19:48:22 · 341 阅读 · 0 评论 -
流程控制与数组(goto语句)
goto语句 应尽量少用goto语句,只有当程序需要从嵌套循环的内层循环中跳出外层循环,或者需要从嵌套循环的内层循中忽略外层循环剩下的语句时,才应该考虑使用goto语句。原创 2015-12-23 19:48:45 · 329 阅读 · 0 评论 -
流程控制与数组(数组)
数组定义数组语法格式如下: type arrayName[length]; 在上面的语法格式中,length用于指定数组的长度。如果定义的数组是全局数组(不在函数或方法中定义的数组),那么该length不允许是变量,只能是整数值或常量;如果定义的数组是局部数组(在函数或方法中定义的数组),那么该length既可是变量,也可是整数值或常量。 由于数组中所有的数组元素都是连续原创 2015-12-23 19:49:32 · 418 阅读 · 0 评论 -
C语言特性(函数)
函数定义函数语法格式如下:函数返回值类型 函数名(形参列表){ //由零条到多条可执行性语言组成的函数}函数声明““ 在如下两种情况下,函数需要先声明,再调用 1.函数定义处于调用的函数后面。 2.函数定义在另一个源文件中。 函数声明有两种形式 1.只声明函数的返回值类型、函数名、形参列表的形参类型,不保留形参名。 2.声明函数的返回值类型、函数名、完整的形参列表,包括形参名原创 2015-12-23 19:50:23 · 1321 阅读 · 0 评论 -
C语言特性(局部变量和全局变量)
局部变量和全局变量局部变量局部变量根据定义形式的不同,又分为如下三种。1.形参:在定义函数签名时定义的变量,形参的作用域实在整个函数内有效。2.函数局部变量:在函数体内定义的局部变量,它的作用域是从定义该变量到函数结束。3.代码块局部变量:在代码块中定义的局部变量,这个局部变量的作用域是从定义到该代码块结束。全局变量在一个函数内部,如果全局变量和局部变量同名,那么局部变量将会覆盖全局变量,意味着原创 2015-12-23 19:51:01 · 893 阅读 · 0 评论 -
C语言特性(预处理)
预处理使用#define、#undef执行宏定义#define的作用就是为字符串起个名字 关于宏定义,有如下注意点1.宏定义并不是C语句,因此不要在宏名称与字符串之间使用=进行复制,而且宏定义也无需使用分好结束。2.宏定义并不是变量,它甚至不是常量,因此不要尝试对宏名称进行赋值。3.编译器对宏定义处理就是进行“查找、替换”——将所有出现宏名字的地方替换成该宏对应的字符串,因此,要保证宏定义是原创 2015-12-23 19:51:40 · 337 阅读 · 0 评论 -
面向对象(类的继承)
面向对象类的继承继承的特点重写父类方法super关键字面向对象(类的继承)继承的特点当子类扩展父类时,子类可以继承得到父类的全部成员变量和全部方法(包括初始化方法)。重写父类方法方法的重写必须注意方法签名关键字要完全相同,也就是方法名和方法签名中的形参标签都需要完全相同,否则就不能算方法重写。super关键字super即可出现在类方法中,也可出现在实例方法中。在类方法中使用super调用父类的原创 2016-01-14 16:55:17 · 578 阅读 · 0 评论