面试题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.

原文地址:https://www.cnblogs.com/brucemengbm/p/6845096.html