基础题

一、选择题

 

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处理相关信息;

 

posted @ 2017-01-03 11:36  欧耶丶  阅读(119)  评论(0)    收藏  举报