| 41、#import跟 #include 有什么区别,@class呢,#import<> 跟 #import””有什么区别? | 
| 1). #import 是Objective-C导入头文件的关键字,#include 是C/C++导入头文件的关键字,使用 #import 头文件会自动只导入一次,不会重复导入。 | 
| 2). @class 告诉编译器某个类的声明,当执行时,才去查看类的实现文件,可以解决头文件的相互包含。 | 
| 3). #import<> 用来包含系统的头文件,#import”” 用来包含用户头文件。 | 
| 🚀🚀🚀🚀🚀🚀 | 
| 42、解释Object-C frame 和 bounds 的异同 ? | 
| 1、frame不管对于位置还是大小,改变的都是自己本身 | 
| 2、frame的位置是以父视图的坐标系为参照,从而确定当前视图在父视图中的位置 | 
| 3、frame的大小改变时,当前视图的左上角位置不会发生改变,只是大小发生改变 | 
|   4、bounds改变位置时,改变的是子视图的位置,自身没有影响; 其实就是改变了本身的坐标系原点,默认本身坐标系的原点是左上角(0,0)。 比如origins改为(0,100),那么左上角坐标变成了(0,100), 子视图的坐标就要相对于(0,100)布局。  | 
| 5、bounds的大小改变时,当前视图的中心点不会发生改变,当前视图的大小发生改变,看起来效果就想缩放一样 | 
| 🚀🚀🚀🚀🚀🚀 | 
| 43、 Objective-C的类可以多重继承么?可以实现多个接口么? | 
| Object-c的类没有多继承, 只支持单继承, 如果要实现多继承的话, 可以通过类别和协议的方式来实现, OC类似于多继承,是在 用protocol委托代理来实现的; 可以实现多个接口,通过实现多个接口可以完成C++的多重继承; | 
| Category 是类别, 一般情况用分类好, 用Category去重写类的方法, 仅对本Category有效, 不会影响到其他类与原有类的关系。 | 
| 🚀🚀🚀🚀🚀🚀 | 
| 44、 Object-C @property 的本质描述 ? | 
| @property 的本质是什么? @property = ivar + getter + setter; “属性” (property)有两大概念:ivar(实例变量)、getter+setter(存取方法)  | 
|   “属性” (property)作为 Objective-C 的一项特性,主要的作用就在于封装对象中的数据。 Objective-C 对象通常会把其所需要的数据保存为各种实例变量。 实例变量一般通过“存取方法”(access method)来访问。 其中,“获取方法” (getter)用于读取变量值,而“设置方法” (setter)用于写入变量值  | 
| 🚀🚀🚀🚀🚀🚀 | 
| 45、Object-C @property中有哪些属性关键字? | 
|   属性可以拥有的特质分为四类: 
 
 
 
 
  | 
| 🚀🚀🚀🚀🚀🚀 | 
| 46、属性关键字 readwrite,readonly,assign,retain,copy,nonatomic 作用简述 ? | 
|   1). readwrite 是可读可写特性。需要生成getter方法和setter方法。 
 
 
 
 
  | 
| 🚀🚀🚀🚀🚀🚀 | 
| 47、简述 系统对象的 copy 与 mutableCopy 方法? | 
| 不管是集合类对象(NSArray、NSDictionary、NSSet ... 之类的对象),还是非集合类对象(NSString, NSNumber ... 之类的对象),接收到copy和mutableCopy消息时,都遵循以下准则: 1. copy 返回的是不可变对象(immutableObject);如果用copy返回值调用mutable对象的方法就会crash。 2. mutableCopy 返回的是可变对象(mutableObject)。  | 
|   一、非集合类对象的copy与mutableCopy 
  | 
|   二、集合类对象的copy与mutableCopy (同上) 
 但是:集合对象的内容复制仅限于对象本身,对集合内的对象元素仍然是指针复制。(即单层内容复制) 
  | 
| 🚀🚀🚀🚀🚀🚀 | 
| 48、简述代码问题:@property (nonatomic, copy) NSMutableArray *arr; | 
|   添加, 删除, 修改数组内的元素的时候, 程序会因为找不到对应的方法而崩溃。 
 
 
  | 
| 🚀🚀🚀🚀🚀🚀 | 
|   49、写Setter 方法用于完成 @property (nonatomic, retain) NSString *name, 写一个 setter 方法用于完成 @property (nonatomic, copy) NSString *name  | 
|   // retain 
  | 
| 🚀🚀🚀🚀🚀🚀 | 
| 50、阐述@synthesize 和 @dynamic 作用? | 
|   @synthesize 是系统自动生成getter和setter属性声明 
 
 @synthesize 意思是,除非开发人员已经做了,否则由编译器生成相应的代码,以满足属性声明。 
 
  | 
| 🚀🚀🚀🚀🚀🚀 | 










