- /*
- 1.NSLog和Printf的区别
- 1)NSLog可以自动换行,输出调试信息,printf不能
- 2)NSLog函数的参数是一个NSString的对象
- 3)printf函数的参数是一个字符串常量指针
- 2.#import 和 #include的区别
- 1)import可以防止头文件的重复包含,include不能
- 2)include是使用预处理指令来防止头文件的重复包含
- #ifndef C7________xxx_h
- #define C7________xxx_h
- 3.new的三件事
- 1)向计算机(堆区)申请内存空间;
- 2)给实例变量初始化;
- 3)返回所申请空间的首地址;
-
- 4.实例变量的修饰符 作用范围
- @puplic (公开的) 作用于当前类
- @protected (受保护的) 作用于当前类,子类(派生类)
- @private (私有的)作用于当前类
- @package (框架级别的) 作用于框架级别的
- 5.C和OC static的区别
- 在C语言中 static可以修饰
- 1)局部变量(延长局部变量的周期)
- 2)全局变量(当前变量只能在本文件中访问)
- 3)函数(当前函数只能在本文件中访问)
- 在OC中 static不能修饰方法 但是可以修饰全局变量和局部变量
- 6.@proprety增强做的三件事
- 1)在.h文件中帮我们自动生成get和set方法声明
- 2)在.m文件中帮我们生成私有的实例变量(前提是没有在.h文件中没有手动生成)
- 3)在.m文件中帮我们是实现get和set方法的
- 注意:
- 在使用@property情况下,可以重写getter和setter方法.需要注意的是,当把setter和getter方法都实现了之后,实例变量也需要手动去写.
-
- 7.NSObject和id的区别
- 1)NSObject和id都可以指向任何对象
- 2)NSObject对象会在编译时进行检查,需要强制类型转换
- 3)id类型不需要编译时检查,不需要强制类型转换
- 8.instancetype和id的区别
- 相同点:都可以作为返回值的类型
- 不同点:
- 1)instancetype可以返回和方法所在类相同类型的对象,id只能返回未知的对象
- 2)instancetype只能作为返回值,不能像id那样作为参数
- 9.nil , Nil ,NULL和NSNULL的区别
- nil 是一个对象值;如果我们要把一个对象设置为空的时候,就用nil
- Nil 是一个类对象的值,如果我们要把一个class的对象设置为空的时候,就用Nil
- NULL 是一个通用指针
- NSNull 是一个对象,它用在不能使用nil的场合
-
- 10.面向对象设计三个主要特征:
- 封装,继承,多态
- 封装的好处:
- 将变化隔离。(不管里面怎么变,使用者不需要知道)
- 便于使用。(使用者只需按照一定的方法使用就可以了)
- 提高重用性。(任何人都可以对已封装好的功能进行操作)
- 提高安全性。(由于暴露给使用者的只是一些外在的操作环节,而不是里面本质的东西,所以就提高了对他的维护性,也就是安全性)
-
- 继承 子类拥有了父类的所有属性和方法
- 多态 父类的指针指向了子类的对象(如果存在多态,父类就可以访问子类的特有方法;如果不存在多态,父类就不可以访问子类的特有方法)
- 11.内存分为5大区域
- 栈区 -- 存放局部变量,临时变量
- 堆区 -- 程序运行过程中,动态分配的内存
- BSS区 -- 未初始化的全局变量和静态变量
- 数据段 -- 已经初始化的全局变量和静态变量
- 代码段 -- 程序编译产生的二进制的数据
- 12.@proprety参数
- 1)原子性:atmoic(原子性)noatmoic(非原子性)
- 2)读写属性:readwrite和readonly
- 3)set方法的处理:assign(修饰基本数据类型)retain(用来修饰OC对象)copy
- 以上是MRC的情况下 ARC的情况下多两个(strong(强指针)weak(弱指针))
- 13.import和@class的区别:(面试题)
- 作用上的区别:#import会包含引用类的所有信息(内容),包括引用类的变量和方法;
- @class仅仅是告诉编译器有这么一个类,具体这个类里有什么信息,完全不知。
-
- 效率上的区别:#import编译效率会非常低,@class就不会出现这种情况。
- 14.关键字的命名规则
- 1.只能由字母,数字,下划线或者美元符号组成
- 2.不能以数字开头
- 3.不能和关键字重名
- 4.严格区分大小写
- 15.结构体与数组有什么区别?
- 1.结构体可以存不同类型的元素,而数组只能存同一类型
- 2.结构体类型需要我们自已定义.数组是用别的类型加[元素个数]
- 3.结构体内存分配方式很特别,使用对齐原则,不一定是所有元素的字节数和,而数组一定是所有元素的字节数和.
- 4.结构体指针可以指针名->结构体元素名(取元素);数组不行.
-
-
-
-
-
- */
复制代码 |
|