OC - 知识点总结

来源:互联网 发布:电视频道网络直播 编辑:程序博客网 时间:2024/06/05 16:32

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  遍历得到的是每一个集合元素


0 0
原创粉丝点击