ios-理论知识3

1、以下哪一段代码不会抛出异常()

NSArray *array=@[1,2,3];NSNumber * number=array[3];
NSDictionary *dict=@{@"key":nil};
NSString *str=nil;NSString *str2=[str substringFromIndex:3];
NSString *str=@"hi";NSString *str2=[str substringFromIndex:3];
选C

其中A是因为数组中存储基本数据类型应该这么存储 NSArray * array =@[@1,@2,@3];,而且取元素,下标越界

选项B,在字典中键值对不能为nil,编译都通不过,如果按照选项B的写法,如果我们这么写 UIView * view2 = nil;
NSDictionary * dict = @{@"key":view2}; 编译的时候是通过了,不过运行的时候会崩溃

选项C正确因为在OC中向空对象发送消息,不执行任何操作。所以没事

选项D,数组下标越界

2、C和Objective-C的混合使用,以下描述错误的是()

cpp文件只能使用C/C++代码
cpp文件include的头文件中,可以出现objective-C的代码
mm文件中混用cpp直接使用即可
cpp使用objective-C的关键是使用接口,而不能直接使用代码
选B

.cpp文件必须只能用c/c++代码,在mm文件中可以混用cpp直接使用。

3、下面关于线程管理错误的是()

GCD在后端管理着一个线程池
NSOperationQueue是对NSthread的更高层的封装
NSThread需要自己管理线程的生命周期
GCD可以根据不同优先级分配线程
选B

NSOperationQueue是管理NSOperation的,肯定和NSThread是没有关系的。ios中多线程的实现方案四种,pthread NSThread GCD NSOperation。其中NSThread是面向对象的,基于pthread的封装。NSThread是需要自己管理线程的生命周期的。如果使用系统设置的的queue,可以设置DISPATCH_QUEUE_PRIORITY,达到不同的优先级。有如下几种#define DISPATCH_QUEUE_PRIORITY_HIGH 2
#define DISPATCH_QUEUE_PRIORITY_DEFAULT 0
#define DISPATCH_QUEUE_PRIORITY_LOW (-2)
#define DISPATCH_QUEUE_PRIORITY_BACKGROUND INT16_MIN

GCD在后端管理者一个线程池是对的,因为GCD是自己管理线程的,如果这个线程做完这个任务了,接着还有下一个任务就会去线程池当前看有没有线程,然后去取去执行任务。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值