您的位置:首页 > 职场人生

面试题4

2015-08-12 09:09 543 查看
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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: