2019-07-12 某行的一次笔试题
一 选择题 多选
在 Objective-C 中, 类的成员变量默认被申明为:
A.@private
B.@protected
C.@public
D.package下面使用到了单例 (singleton) 模式的是:
A.NSFileManager
B.NSNotificationCenter
C.UIApplication
D.UIDevice下面关于方法: [[[obj method1] method2] method3: [obj method4]] 中的 method 的调用顺序:
A.1234
B.1243
C.4123
D.4321在对象的 dealloc 方法中, 关于 [super dealloc] 语句说法正确的是:
A. [super dealloc] 有没有都无所谓
B. [super dealloc] 应该放在 dealloc 方法内容第一行
C. [super dealloc] 应该放在 dealloc 方法内容最后一行
D. [super dealloc] 位置无所谓, 只要在 dealloc 方法里有就行Objective-C 的快速枚举对比循环访问的有点, 以下说法正确的是:
A.使用快速枚举效率更高
B.语法更简洁
C.使用更安全
D.支持更多的数据类型关于 iOS 程序后台运行, 正确说法是:
A.可以后台播放音乐
B.可以后台定位
C.可以后台运行VOIP服务
D.可以在后台发送HTTP请求ARC 模式下, 下面哪个方法是未被禁用的
A. retain
B. copy
C. release
D. autorelease关于 UIControl 和 UIView 之间的关系, 下面的说法正确的是
A. UIControl 继承于 UIView
B. UIView 继承于 UIControl
C. UIControl 与 UIView 之间没有继承关系
D. UIControl 和 UIView 都直接继承于 UIResponder在给 UIButton 设置图片时, 为了让图片适应按钮的大小, 需要将按钮的 contentMode 设置为
A.UIViewContentModeScaleToFill
B.UIViewContentModeScaleAspectFit
C.UIViewContentModeScaleAspectFill
D..UIViewContentModeCenter下面各数据类型中, 能够直接放进 NSArray 的有
A. BOOL
B. NSInteger
C.NSString
D. NSArray关于 XML 和 JSON , 下列说法正确的有
A. XML 是一种类似 HTML 的语言, JSON 是一种轻量级的数据交换格式.
B. XML 是基于键值对的结构
C. JSON 有 DOM 和 SAX 两种解析方式
D. JSON 和 XML 之间可以相互转换
二 填空
- @property 的作用是__________, @synthesizer 的作用是________
- 分类 (category) 能够向一个已有的类中添加__________
扩展 (extension) 能够向已有的的类中添加_________ - #import 和 #include 的区别是________
- 以下函数代码:
- (void)setName:(NSString *)newName {
self.name = newName;
}
被调用执行会导致的结果是________
- 协议 (protocol) 可以分为两种, 其中以关键字_________申明的协议可以不被实现.
三 简答题
- 属性 readwrite readonly assign retain copy nonatomic 各是什么作用, 在哪种情况下使用?
- 写一个 setter 方法用于完成
@property (nonatomic, retain) NSString *name;
写一个 setter 方法用于完成@property (nonatomic, copy) NSString *name;
3.类别的作用?继承和类别在实现中有何区别?
4.什么时候用delegate? 什么时候用 Notification?
5.什么是 KVC 和 KVO?
四 程序题
- 写一个委托的 interface
- 请实现一个 NSString 的方法
- (id)initWithCString:(const char *)nullTerminatedCString encoding:(NSStringEncoding)encoding;
简单解答
写一个 setter 方法用于完成 @property (nonatomic, retain) NSString *name;
- (void)setName:(NSString *)name {
if (_name != name) {
[_name release];
_name = [name retain];
}
}
写一个 setter 方法用于完成 @property (nonatomic, copy) NSString *name;
- (void)setName:(NSString *)name {
if (_name != name) {
[_name release];
_name = [name copy];
}
}
请实现一个 NSString 的方法:
+ (id)initWithCString:(const char *)nullTerminatedCString encoding:(NSStringEncoding)encoding;
+ (id) stringWithCString: (const char*)nullTerminatedCString
encoding: (NSStringEncoding)encoding
{
NSString *obj;
obj = [self allocWithZone: NSDefaultMallocZone()];
obj = [obj initWithCString: nullTerminatedCString encoding: encoding];
return AUTORELEASE(obj);
}