一、选择题
1.Object-C的类可以多重继承么?( B )
A.可以 B.不可以
2.什么是主窗口?( B )
A.App中唯一的那个UIWinow对象
B.可以接收到键盘输入等事件的UIWindow
3.要让对象具有归档必须实现的协议是?( A )
A.NSCoding B.NSCopying
4.让一个视图刷新的方法是?( A )
A.setNeedsDisplay B.drawRect C.loadView D.initWithFrame
5.关于MRC中的assign和ARC中的weak的区别,下列描述错误的是( C )
A.用weak时当对象消失后自动把指针变成nil
B.修饰代理时用weak和assign属性都可以
C.MRC中的assign只能用于基本数据类型,不能用于OC中的对象
D.ARC中的assign只能用于修饰基本数据类型
6.在ARC中 assign,weak,copy,strong 属性的作用,下列说法正确的是(多选)( ABCD )
A.copy : 一般用于NSString\block
B.strong : 一般用于除了NSString\block以外的OC对象
C.weak : 一般用于代理\UI控件 当2个对象相互引用,一端用strong,一端用weak
D.assign : 基本数据类型、枚举、结构体(非OC对象)
7.以下哪些不是UINavigationController的属性?( D )
A.@property(nonatomic,readonly) UINavigationBar *navigationBar;
B.@property(nonatomic,retain) UIBarButtonItem *backBarButtonItem;
C.@property(nonatomic,retain) UIBarButtonItem *leftBarButtonItem;
D.@property(nonatomic,retain) UITabBarItem *tabBarItem;
8.关于层和UIView的区别说法错误的是?( D )
A.两者最大的区别是,图层不会直接渲染到屏幕上,UIView 是iOS系统中界面元素的基础,所有的界面元素都是继承自它
B.UIView本身完全是由CoreAnimation来实现的
C.UIView真正的绘图部分,是由一个CALayer类来管理,UIView本身更像是一个CALayer的管理器
D.一个UIView上只能有一个CALayer用来增强UIView的展现能力
9.UIViewController在整个生命周期中,以下各个方法的调用顺序正确的是( A )
A. init -> viewDidLoad -> viewWillApper -> viewDidAppear -> viewWillDisapper -> viewDidDisapper
B. init -> viewWillApper -> viewDidAppear -> viewDidLoad -> viewWillDisapper -> viewDidDisapper
C. init -> viewWillApper -> viewDidLoad -> viewDidAppear -> viewWillDisapper -> viewDidDisapper
D. init -> viewWillApper -> viewDidAppear -> viewWillDisapper -> viewDidLoad -> viewDidDisapper
10.在没有navigationController的情况下,要从一个ViewController切换到另一个ViewController应该( D )
A. [self.navigationController pushViewController:nextViewController animated:YES];
B. [self.view addSubview:nextViewController.view];
C. [self pushViewController:nextViewController animated:YES];
D. [self presentModalViewController:nextViewController animated:YES];
11.以下哪个不是刷新表格TableView的方法( D )
A. reloadData
B. deleteRowsAtIndexPaths:withRowAnimation:
C. reloadRowsAtIndexPaths:withRowAnimation:
D. reloadTableView
12.以下哪个不是iOS中数据持久化常用的方式( C )
A. 属性列表
B. 对象归档
C. MySQL
D. CoreData
13.关于NSSet、NSArray、NSDictionary说法错误的是( C )
A. NSArray 是顺序的,可以通过下标获取数组中的对象
B. NSDictionary 是无序的,通过键值对匹配,可以通过key-->value
C. NSSet 是有序的,"通常用于做缓冲区",可以通过"anyObject"方法获得其中的对象
D. NSSet、NSArray、NSDictionary只能保存Cocoa对象,不能用于保存C语言中的基本数据类型
14.关于iOS中代理设计模式的说法错误的是( D )
A. 代理本身是一个对象,这个对象是专门代表被代理对象来和程序中其他对象打交道的。
B. 代理的主要价值是它可以让你容易的定制各种对象的行为。
C. 当一个类的某些功能需要被别人来实现,但是既不明确是些什么功能,又不明确谁来实现这些功能的时候,代理模式就可以派上用场。
D. 声明一个代理属性时通常需要使用strong防止循环引用问题
15.以下关于-(void)loadView说法错误的是( D )
A. 苹果建议:在loadView方法中,只是创建子视图控件,不设置位置,在viewWillLayoutSubviews方法中设置控件的位置
B. loadView方法是苹果公司专门为程序员提供的,用代码创建视图层次结构的方法
C. 在loadView方法中,通常不要调用[super loadView];如果调用父类方法默认会创建一个空视图
D. 在loadView方法中,如果self.view没有被实例化之前,直接调用self.view,系统会自动创建一个self.view
二、简答题
1.不接收用户的触摸事件的原因?
答:
(1)不接收用户交互 userInteractionEnabled = NO;
(2)隐藏: hidden = YES;
(3)透明: alpha = 0.0 ~ 0.01;
(4)如果父视图不接收用户交互,那么其中的所有子视图,同样不支持用户交互!
(5)如果子视图所在位置,超出了父视图的有效范围,是不能交互的
即便没有设置clipsToBounds,也只能显示,但是不能交互!
2.iOS应用程序中沙盒内有哪些文件夹,通常分别是用来做什么的?
答:
(1)Documents; (重要的文件一般存一些小的数据)
(2)Library/Caches; (非重要的本地缓存文件)
(3)Library/Preference; (保存应用偏好设置数据)
(4)tmp; (应用程序的临时缓存文件)
3.请分别写出UITableView和UIButton的层级结构(继承关系),一直到 NSObject .
(1)UITableView -> UIScrollView -> UIView -> UIResponder -> NSObject
(2)UIButton -> UIControl -> UIView -> UIResponder -> NSObject
4.请画出CAAnimation的层级结构
5.控制器View的生命周期及相关函数是什么?你在开发中是如何用的?
答:
(1)首先判断控制器是否有视图,如果没有就调用loadView方法创建:通过storyboard或者代码;
(2)随后调用viewDidLoad,可以进行下一步的初始化操作;只会被调用一次;
(3)在视图显示之前调用viewWillAppear;该函数可以多次调用;
(4)视图viewDidAppear
(5)在视图显示之前调用viewWillDisappear;该函数可以多次调用(如需要);
(6)在布局变化前后,调用viewWill/DidLayoutSubviews处理相关信息;