本帖最后由 qiu1993 于 2016-2-18 21:33 编辑
一、简答题 1、宏定义的格式,在什么情况下使用枚举,什么情况下使用结构体 #define 被替换内容 替换成的内容 枚举: 当一个变量只有有限的几个取值的时候,可以使用枚举 结构体(struct):用来存放若干个相同或者不同类型的一个构造类型
2、面向对象编程和面向过程编程 面向过程编程关注解决问题需要哪些过程 面向对象关注解决问题需要哪些具体对象,并通过对象来解决问题。 面向对象是基于面向过程的
3、id 和 instancetype的区别 id 和 instancetype的区别 id能作为方法或函数的返回值 参数值 也可以用来定义变量 instancetype 只能作为函数或者方法的返回值 instancetype对比id的好处就是:能精确的限制返回值的具体类型
4、OC中使用字符串,为什么要在前面加上@? @符号 1、@符号的使用,@“”这个符号表示将一个C语言的字符串转化为OC中的字符串对象NSString 2、@标示符 OC中大部分的关键字都是以@开头的,比如@interface ,@implementation ,@end 5、现在有一个不知道什么类型的对象A ,如何获取对象A的类名并再创建一个对象B。
问答题 1、简述 内存分区,以及存放的数据 1)、栈 :是用户程序临时创建的局部变量 2)、堆 :程序运行时动态分配 的内存。对象 3)、BSS段(全局区) :用来存放未初始化的全局变量和静态变量 4)、数据段(常量区) :已经初始化的全局变量和静态变量 (常量) 5)、代码段 :源代码产生的二进制数据
2、循环结构中break语句和countinue语句的作用,区别 break通常用于循环语句和开关语句中,通常是结束当前的循环,break以后的语句也不执行了,看见break就退出整个一层循环 continue ,结束本次循环,继续下次循环 可以用在循环,可以用来加速循环 。结束本次循环,就是循环体内剩下的语句不再执行,跳到循环开始,然后判断循环条件,进行新一轮的循环。 continue可以加速循环
3、#import #include 和@calss三者的意思,三者的不同 #import 跟#include 又什么区别,@class呢, #import<> 跟 #import”"又什么区别?#import是Objective-C导入头文件的关键字,#include是C/C++导入头文件的关键字,使用#import头文件会自动只导入一次,不会重复导入,相当于#include和#pragma once;@class告诉编译器某个类的声明,当执行时,才去查看类的实现文件,可以解决头文件的相互包含;#import<>用来包含系统的头文件,#import””用来包含用户头文件。 @class适用于前向声明一个类。但是没有引入,需要用这个类时,还是如要把这个类的头文件给improt进来的
4、简述你对SEL的理解,假设对象A有一个对象方法B,那么A如何通过SEL方式执行方法B · /* ·
调用方法有两种方式: ·
1.直接通过方法名来调用 ·
2.间接的通过SEL数据来调用 ·
*/
SEL s1; //手动把 run方法 转换为sel类型的
s1 = @selector(run2); //发送s1 向 p对象发送
[p performSelector:s1]; //间接的通过SEL数据来调用
|