2024年2月21日发(作者:)

课工场创意学院

UI基础知识测试题

一、选择题

1.下面哪个不是按钮(Button)的状态?

A. normal

B. highlighted

C. disabled

D. touchInside

参考答案:D

2.下面哪一个是其中三个类的父类?

A. UIButton

B. UILabel

C. UIView

D. UIImageView

参考答案:C

3.下面哪一个不是确定控件位置的属性?

A. frame

B. CGRect

C. bounds

D. center

参考答案:B

4.在4英寸Retina屏幕的设备上,一个点是一个( )的格子?

A. 1像素 * 2像素

B. 1像素 * 1像素

C. 2像素 * 2像素

D. 2像素 * 1像素

参考答案:C

5.所有可以触发操作方法的iOS控件都是( )的子类。

A. UIView

B. UIControl

C. NSResponder

D. UIResponder

参考答案:B

6.在UIKit中,frame与bounds的区别是?

课工场创意学院

A. frame 是 bounds 的别名

B. frame 是 bounds 的继承类

C. frame 的参考系是父视图坐标,bounds 的参考系是自身的坐标

D. frame 的参考系是自身坐标,bounds 的参考系是父视图的坐标

参考答案:C

on 和 UIImageView 的说法正确的是?

A. 默认都能显示图片

B. 默认都能显示文字

C. 默认都能响应事件

D. 以上说法都是正确的

参考答案:A

8.如果UIScrollView无法滚动,以下原因哪个是不正确的?

A. 没有取消autolayout功能

B. 没有接收到触摸事件:userInteractionEnabled = NO

C. scrollEnabled = YES

D. 没有设置contentSize

参考答案:C

9.下面那个不是UITableView数据源方法?

A. -(NSInteger)numberOfSectionsInTableView:(UITableView*)tableView;

B. - (CGFloat)tableView:(UITableView*)tableView

heightForRowAtIndexPath:(NSIndexPath*)indexPath;

C. -(UITableViewCell*)tableView:(UITableView*)tableView

cellForRowAtIndexPath:(NSIndexPath*)indexPath;

D. - (NSInteger)tableView:(UITableView*)tableView

numberOfRowsInSection:(NSInteger)section;

参考答案:B

10.关于字典转模型不正确的是?

A. 字典转模型的后,性能会大大提升

B. 防止因为字典的 Key 写错导致加载数据出错

C. 模型的属性写错编译器会直接报错

D. 使用模型访问属性,编译器会给相应的提示,提高开发效率。

参考答案:A

11.关于instancetype和 id 描述不正确的是?

A. instancetype和 id意义相同

课工场创意学院

B. linstancetype在类型表示上,跟id一样,可以表示任何对象类型

C. linstancetype只能用在返回值类型上,不能像id一样用在参数类型上

D. linstancetype比id多一个好处:编译器会检测instancetype的真实类型

参考答案:A

12.关于 UIbutton 下面描述错误的是?

A. UIbutton的 title 可以直接进行赋值改变

B. UIbutton 的背景图片会填充整个 button 的区域,图片会拉伸

C. UIbutton 设置 iamge 属性的时候,图片不会占据整个 button

D. UIbutton 设置属性的时候如果直接赋值可能没有效果,最好通过 setter 方法设置,并且指定状态.

参考答案:A

13.关于懒加载,下列描述错误的是?

A. 懒加载其实就是 getter 方法

B. 不调用一个属性的getter, 懒加载就会失效

C. 调用带下划线的属性可以触发懒加载方法

D. 懒加载其实就是使用时再加载.

参考答案:C

14.在使用 tableview 的时候,数据源方法- (UITableViewCell *)

tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath

*)indexPath;没有调用,下列有可能导致的因素有?

(1).没有设置数据源为当前控制器

(2).-(NSInteger)tableView:(UITableView *)tableView

numberOfRowsInSection:(NSInteger)section;方法返回值为0;

(3).没有实现- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;

(4).没有手动强引用 tableview

A. (1)(2)

B. (1)(3)

C. (1)(4)

D. (3)(4)

参考答案:A

15.关于UItableviewCell 的重用原理,正确的是?

A. 不管有多少个 cell, 只创建一个 cell 进行重用

B. 只有当缓存池里面的 cell 不能满足重用的时候才会创建新的 cell 用于显示

C. cell 创建后就会自动进入缓存池中

课工场创意学院

D. 缓存池中的 同一个cell 是同时可以被显示多次的

参考答案:B

二、简答题

1.请详细回答strong/weak/assign/copy关键字的作用与区别。

参考答案:

strong一般在ARC中用于除NSString/block之外的OC对象

weak在ARC中当指针不需要对对象强引用时使用中当两个对象具有互相拥有的关系时,应该一端用strong,一端用weak

assign在ARC中一般用于基本数据类型.在MRC中如果两个对象具有相互拥有的关系时,应该一端用retain,一端用assign

copy一般用于NSString和block.

ng对象作为属性时为什么推荐使用copy关键字修饰,什么时候可以用strong修饰呢?

参考答案:

为了防止NSMutableString被无意中修改, NSMutableString是NSString的子类, 因此NSString指针可以持有NSMutableString对象.

当该属性真实类型就是NSString时,完全可以使用strong来修饰.