我想将屏幕的镜像发送到另一台计算机。我的想法是先发送15个屏幕捕获图像。我写了一些代码如下,它有效。
while(YES) {
[stillImageOutput captureStillImageAsynchronouslyFormConnection:videoConnection
completionHandler:^(CMSampleBufferRef imageSampleBuffer,NSError *error){
NSdata *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageSampleBuffer];
NSArray *sort = [[NSArray alloc] init];
NSUInteger length = [imageData length];
NSUInteger chunkSize = 9200;
NSUInteger offSet = 0;
do {
NSUInteger thisChunkSize = length - offSet > chunkSize ? chunkSize: length - offSet;
NSData *chunk = [NSData dataWithBytesNoCopy:(char *)[imageData bytes] + offSet;
length:thisChunkSize
freeWhenDone:NO];
sort = [sort arrayByAddingObject:chunk];
offSet += thisChunkSize;
} while(offSet < length);
GCDAsyncUdpSocket *sendImage;
sendImage = [[GCDAsyncUdpSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
for(int i = 0;i < sort.count;i++) {
[sendImage sendData:[sort objectAtIndex:i] toHost:@"239.1.1.110" port:46110 withTimeout:-1 tag:1];
[NSThread sleepForTimeInterval:0.0012f];
}
[NSThread sleepForTimeInterval:0.002f];
}
但问题是随着时间的推移,应用程序占用了更多的内存和CPU资源。我只想继续拍摄并发送图像。我是Cocoa Programming的新手,我对内存管理知之甚少。
也许我的解决方案很愚蠢,任何人都可以帮我修改代码更高效吗?或者给我一些有用的建议?
感谢任何帮助,非常感谢。