面试题4

58. 线程之间怎么通信?
59.
线程生产者,消费者如何实现?

1 个线程是生产者,一个是消费者如何实现这个模型.

NSMutableArray *dataList;NSLock *dataLock;
- (void) produceAndConsume {

dataList = [[NSMutableArray alloc] init];
dataLock = [[NSLock alloc] init];
[NSThread detachNewThreadSelector:@selector(produce:) toTarget:self withObject:nil];[NSThread detachNewThreadSelector:@selector(consume:) toTarget:self withObject:nil];

}
- (void) produce:(id)arg {

int index = 0;while (1) {

NSNumber *n = [NSNumber numberWithInt:index++];[dataLock lock];
[dataList addObject:n];
[NSThread sleepForTimeInterval:0.5];

}}

- (void) consume:(id)arg {while (1) {

if ([dataList count] > 0) {[dataLock lock];

id obj = [dataList objectAtIndex:0];[dataList removeObject:0];[dataLock unlock];
NSLog(@"
消费 obj %@", obj);

}

[NSThread sleepForTimeInterval:1];}

}
60. 不同屏幕怎么适配

iphone, iphone3G, iphone3GS 320x480
iphone4, iphoen4S 640x960 retina
iphone5, iphone5S, 640x1136
写程序需要有 2 套图片 demo.png demo@2x.pngiphone5 适配.

1136/2-44-49

[[UIScreen mainScreen] applicationFrame] = (320x460, 320x548)[[UIScreen mainScreen] bounds] = (320x480, 320x568)
iPad, iPad2, iPad Mini 1024x768
iPad3, iPad4, 2048x1563

61. 不同版本屏幕旋转怎么适配62. 内存警告应该怎么做

尽量多的释放内存。把一些内容写到文件中,不要保存在内存中。63. iOS5, iOS6, iOS7 区别

64. NSNotification 是同步还是异步的

是同步的. 如果需要异步 必须使用 NSNotificationQueue 实现
A notification center delivers notifications to observers synchronously. In other words, thepostNotification: methods do not return until all observers have received and processed thenotification. To send notifications asynchronously use NSNotificationQueue.

In a multithreaded application, notifications are always delivered in the thread in which thenotification was posted, which may not be the same thread in which an observer registereditself.

Hope it helps you.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值