objective-c知识点易混点总结


1 、协议的基本概念和协议中方法默认为什么类型
oc
中的协议是一个方法类表,他的特点是可以被任何类型实现,但并不是类,自身不会实现方法,而是由签订协议的类去实现,协议经常被用到委托代理模式
如果一个类采用了一个协议,name他必须实现血肿中必须要实现的方法,在协议中的方法默认是必须要实现的(@required),添加关键字@optional表明一旦该协议被采用,这些可选的方法可以不实现



2 #include #import 的区别、 #import @class 的区别、 #....“” #...<> 的区别
#include
#import 的区别:#include是C语言中把. h文件中的代码copy到当前文件下,不可以重复倒入,#import是oc机制下把.h中的内容copy到当前文件下,如果不小心重负倒入,不会报错,编译器会自动识别只copy一次。
#import @class 的区别:#import是copy文件内容到当前文件,@class是只告诉当前文件有这么一个类,并没有copy文件内容到当前文件
#....“” #...<> 的区别:#…""是优先查找当前工程中是否有这么一个类,如果没有再去库中查找,而#…<>是直接在库中查找,前者一般用在导入自定义类文件,后者是导入库中的类文件

3 @public @protected @private 它们的含义与作用

1 @public: @public 修饰的属性,在任何地方都能被访问,当前类,子类,类的外部都能被访问,破坏了封装性
2 @protected: @protected 修饰的属性是表示受保护的属性,只有在当前类和子类中才能被访问
3 @private: 私有的,修饰的属性只有在当前类才能被访问,子类也不能访问和继承
4 )通过指针运算符( -> )能够访问到 private 方法吗? OC 语言中还提供了哪些方式能直接和间接的访问对象的实例变量?
通过->不能访问private方法,
oc中提供了get set方法可以访问对象的实例变量,还有通过KVC可以直接访问实例变量

4 、简述类目优点和缺点,如果覆盖本类或者父类的方法,会出现什么问题?

通过类目我们可以给父类和本类增加方法或者说是扩展方法,优点就是可以很方便的问类增加方法,并且这些方法能被子类继承,缺点是被类目覆盖活着重写的方法,父类中的此方法将不能在被调用。

5 、简述内存管理基本原则

黄金法则,出现retain,copy,alloc都需要有对应的release;
避免出现循环引用
像一个对象发送autorelease时,这个对象不会立即销毁,而是将这个对象放入到自动释放池中,待池子释放时,他会想池中的每一个对象发送一条release消息,以此来释放对象
像一个对象发送一条release,并不意味着对象会马上销毁,而是当这个对象引用计数为0时系统才会调用dealloc方法,释放该对象和对象本身所有的实例。



6 、什么是 retain count
retain count
是所有对像在MRC(手动管理内存)环境下所有对象都有的一个属性,可以查看当前调用此方法的的对象引用计数值。



7 、解释栈、堆、全局区、文字常量区以及程序代码区
栈区不需要我们管理内存,有系统自动分配,存放局部变量
堆区,需要我们管理内存,所有的对像都存放在堆区
全局区(静态区:static):全剧变量和静态变量的存储释放在一块的,初始化的全剧变量和静态变量放在一个区域,初始化的全剧变量和为初始化的静态变量在相邻的另一块区域,程序结束后又系统释放。
文字常量区--常量字符串是放在这里的,程序结束后由系统自动释放
程序代码区--存放的函数体的二进制代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值