QF——OC数组】的更多相关文章

OC中的数组: OC中的数组和它的字符串有很多相似之处.也分为可变和不可变. NSArray:不可变数组,一经初始化,便不能再更改: NSMutableArray:可变数组,它其实是继承于NSArray,所以NSArray的方法它都可以用,只不过又拓展了些数组自己操作的方法. NSArray数组的初始化: //NSArray:不可变数组 //NSArray的实例化方法: //对象方法: NSArray * arr1 = [[NSArray alloc]initWithObjects:@"one&…
昨天总结了一下NSString与NSMutableString,今天我在这里总结一下NSArray与NSMutableArray. NSArray数组是:不可变数组. nil 是数组元素结束的标记.OC数组中不能存放nil值. NSMutableArray是可变数组. 同时在OC数组中不能存放非OC对象的数据类型,比如:int .struct. enum等类型. 下面开始说一下NSArray数组. (1).数组的创建 arrayWithObject  arrayWithObjects //NSA…
和上一篇文章一样,数组的重要性不言而喻,在OC编程的过程中我们会不断的使用到NSArray,和C语言不同的是,我们这里的数组只能存OC对象类型,不能存C语言基本数据类型,也不能存NSNull类型,但是我们这里的数组可以存多种对象类型,比如,在同一个数组里面,既可以存字符串类型,又可以存对象化了以后的整数类型,甚至是另外一个数组,也可以存其他的对象类型(将C语言的数据类型转换成OC的对象类型下面会讲到),不过在同一个数组里面尽量存同一种数据类型,这是为了方便使用.在OC数组里面以nil表示结尾,如…
OC中的字符串: C中没有字符串类型,用字符数组和指针代替. OC中引入了字符串类型,它包括NSString 和 NSMutableString两种 NSString是不可变的,已经初始化便不能更改:NSMutableString是可变的,可以对自己进行修改操作的.这类似于Java里的String和BufferString. 为什么NSString是不可变的,NSMutableString是可变的?? 因为NSString在内存的数据结构是List,它是有序排列,大小固定的:而NSMutable…
本文介绍了OC的数组对象的基本方法的使用: 因为OC的数组中存储的为对象类型,所以我们可以新建一个Person类,通过Person生成对象进行操作. 其中Person.h中的代码为: [objc] view plain copy #import @interface Person : NSObject { NSString *_name; //姓名 NSString *_sex; //性别 NSInteger _age; //年龄 } - (NSInteger)age; - (id)initWi…
// 数组存放的内容必须是NSObject对象,数组中存放的内容是有序的 // 数组打印输出在输出台是用()包括起来的 // NSArray 不可变数组 // 1.创建对象 // 初始化方法 NSArray *array1 = [[NSArray alloc] initWithObjects:@"盖聂", @"卫庄", @"天明", @"少羽", nil]; NSArray *array2 = [[NSArray alloc]…
/*---------------------------创建数组------------------------------*/ //NSArray *array = [[NSArray alloc] initWithObjects: @"One",@"Two",@"Three",@"Four",nil]; self.dataArray = array; [array release]; //- (unsigned) Cou…
@selector(): 可以理解@selector()就是取类方法的编号,他的基本行为类似于C语言中的函数指针(指向函数的指针).它们通过传递方法的地址(或编号)来实现把方法当做参数的效果. 不过在C语言中,可以直接把一个函数名赋给一个函数指针,但是在OC中不行,而是要通过@selector语法来取.它的括号里传入的是方法名,返回结果是SEL类型,该类型本质上就是方法的编号(地址). OC中可以通过SEL类型(即方法编号)来动态的调用方法.其实OC中调用方法的本质是消息传递:系统给对象发送执行…
堆的内存管理: 我们所说的内存管理,其实就是堆的内存管理.因为栈的内存会自动回收,堆的内存需要我们手动回收. 栈中一般存储的是基本数据类型变量和指向对象的指针(对象的引用),而真实的对象存储在堆中.因为栈结构的缘故,它是严格地存储在栈数据结构中的,其中数据的生命周期结束后内存都会被回收.此时,对象的引用已经被回收了,但是对象还存在于堆中,这便造成了内存泄露. 引用计数器:(ratainCount) 每个对象都有引用计数器,在每个对象内部都有块内存存储它.顾名思义,引用计数器代表该对象被引用的次数…
多态: 封装,继承,多态是面向对象的三大特征. 那多态到底是什么呢? 多态:允许不同的类定义相同的方法,OC能自己判断当前类所对应的方法,不会混乱. 动态类型:程序直到运行时才确定对象的类型. 动态绑定:基于动态类型,程序直到运行时才能确定要执行的方法. 多态:父类的指针可以指向子类的对象.这句话一定要深刻理解,请看几行代码: Animal * obj = [[Dog alloc] init]; [obj eat]; 虽然该obj前面是Animal类,也就是说它被声明是Animal类的一个指针,…