如何让我的cocoa应用程序占用更少的内存和CPU资源

时间:2016-04-20 09:10:41

标签: objective-c xcode macos cocoa memory-management

我想将屏幕的镜像发送到另一台计算机。我的想法是先发送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的新手,我对内存管理知之甚少。

也许我的解决方案很愚蠢,任何人都可以帮我修改代码更高效吗?或者给我一些有用的建议?

感谢任何帮助,非常感谢。

0 个答案:

没有答案