您的位置:首页 > 其它

OC - 知识点总结

2015-08-14 20:51 218 查看
1,什么是OOP?
面向对象编程 :OOP(Object Oriented Programming)
2,面向对象和面向过程编程思想的区别
面向过程:分析解决问题的步骤,实现函数,依次调用 (以事件为中心,关心的是完成事件的详细步骤)
面向对象:分析解决问题的对象,协调对象间的联系和通信,解决问题 (以事物为中心,关心的是事物应该具备哪些功能,完成这件事只是事所有功能的一个小功能)
3. 如何去定义一个类?
类:包括两个部分 静态属性(特征) + 动态行为(方法)
类定义包括两个部分:接口部分(.h文件 定义\声明 实例变量和方法)
实现部分(.m文件 方法的实现)

4. OC中方法的分类
+ 加号方法,类方法
- 减号方法,实例方法

5.OC中怎么得到一个方法的方法名
- (NSInteger)maxValueX:(NSInteger)x withY:(NSInteger)y;
去掉 ‘-‘ 去掉返回值类型 去掉参数和参数类型
方法名为:maxValueX:withY

6.属性和实例变量的区别
形式不同
{
NSString *_name;
}
@property (nonatomic,retain)NSString *name;
属性:
1)属性会自动生成实例变量 私有的 _ + 属性名
2)属性会自动生成setter getter 方法
3)属性对于自身生成的setter getter 可以使用 点语法进行访问 self.name = name; _name = name [_name setName:name];
4)属性生成的setter getter中 对实例变量进行了内存的处理
实例变量:
1)描述类具有的静态特征
7.对属性的三大类修饰,分别的作用和区别
1.读写特性 readonly readwrite(默认)
2.原子特性 atomic(默认) nonatomic(推荐)
3.语义特性 assign(默认,基本数据类型) retain copy
8.什么是block?
block 是块语法,存储的是一个匿名的函数(没有名字的函数)的实现
其实block就是一个匿名函数,只不过特殊的一点就是block这个匿名的函数可以在函数中定义,其余的都不允许函数之间嵌套定义

9.__block的作用?
__block 告诉编译器,当在block内部使用局部变量时,不要把局部变量识别为常量 还是当做变量来使用

10.如何使用block来给数组排序?
使用block块语法完成排序规则的实现,使用block变量进行功能代码块的存储
使用数组的排序方法 将block当做参数进行传入
11.扩展一个类的途径有哪些,什么是类目(category),什么是延展(exstion),有什么区别
category : 又叫 分类,类目 为没有源代码的类添加方法(不能添加实例变量) 定义分成接口部分和实现部分
为原类添加方法,就相当于原类具有该方法,可以正常调用.
延展Extension ,是为类扩充私有的方法,以及私有的实例变量,和分类category相比,延展定义的方法是私有的,而且还可以定义实例变量(私有的)
12.self 与super 的作用?
首先明确self指的是self的使用者, 简单说 谁使用self,self就是谁
当使用self 调用方法时,会从当前类的方法列表中开始找,如果没有会从父类中找方法(继承得到的)
super是一条指令,不是父类的对象
他实现的是直接定位到父类方法列表进行查询,然后调用父类方法的实现
13.字符串,数组,字典,集合的常用用法,以及集合的快速遍历.可变与不可变的区别?
NSString
1.创建NSString 对象 alloc initWithFomat
2.求字符串长度 length
3.判断是否以字符串开头或者结尾 hasPrefix: hasSuffix:
4.搜索一个指定的字符串的范围 rangeOfString
5.字符串的截取 substringFromIndex: substringToIndex: substringWithRange:
6.拼接字符串 stringByAppendFormat:
7.字符串的比较 compare
8.大小写转换 uppercaseString lowercaseString capitalizedString
NSMutableString
1.创建NSMutableString 对象 stringWithFormat:
2.修改字符串 replaceCharacterInRange:withString:
3.拼接字符串 appendFormat:
4.插入字符串 insertString:atIndex:
5.删除字符串 deleteCharacterInRange:
6.重置字符串 setString:
…………
14.OC的内存管理机制
黄金法则:
如果对一个对象使用了 alloc copy retain 那么你就拥有了该对象的所有权,你就有责任对该对象进行release或者autorelease.
(一)原则
只要还有人在使用某个对象,那么这个对象就不会被回收;
只要你想使用这个对象,那么就应该让这个对象的引用计数器+1;
当你不想使用这个对象时,应该让对象的引用计数器-1;
(二)谁创建,谁release
(1)如果你通过alloc,new,copy来创建了一个对象,那么你就必须调用release或者autorelease方法
(2)不是你创建的就不用你去负责
(三)谁retain,谁release
只要你调用了retain,无论这个对象是如何生成的,你都要调用release
(四)总结
有始有终,有加就应该有减。曾经让某个对象计数器加1,就应该让其在最后-1.。
15.autoreleasepool的工作机制
可以简单理解为 延迟集体释放
某个对象调用了autorelease方法时,该对象会被加入自动释放池。对于发送了autorelease消息的对象,当自动释放池销毁时,自动释放池会对每一个对象发送一条release消息,来释放他们。
16.数组、字典、集合的特点及区别
数组: 有序 有下标概念 从0 开始 元素可以重复 输出格式 (); 方法:count
遍历方法 for 和 forin 遍历得到的是每一个数组元素

字典: 无序 存放键值对(条目) Key ~ value Key不重复 输出格式{}; 方法:count
遍历方法 for 和 forin 通过key 索引 value

集合 : 无序 集合内元素 不能重复 如果重复在使用方法count时 只识别一个
输出格式: {()};
遍历方法 forin 遍历得到的是每一个集合元素
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: