本帖最后由 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数据来调用 
 |