Mac OS X Lion의 CARemoteLayerServer 및 CARemoteLayerClient가 QuartzCore에 추가되었습니다. 여러 프로세스간에 그래픽 응용 프로그램을 분할하는 데 적합할지 조사하려고했지만 성공하지는 못했습니다. 좋은프로세스간에 CAREMoteLayerServer 및 CARemoteLayerClient를 사용할 수 있습니까?
- (void)buildLayerSingleProcess
{
CARemoteLayerServer *server = [CARemoteLayerServer sharedServer];
self.client = [[CARemoteLayerClient alloc] initWithServerPort: server.serverPort];
uint32_t clientID = self.client.clientId;
CALayer *layer1 = [CALayer layer];
layer1.bounds = CGRectMake(0.0, 0.0, 100.0, 100.0);
CGColorRef color = CGColorCreateGenericRGB(0.4, 0.2, 0.3, 1.0);
[layer1 setBackgroundColor: color];
CFRelease(color);
[layer1 setOpacity: 0.75];
[layer1 setBorderWidth: 5.0f];
layer1.position = CGPointMake([[self.window contentView] frame].size.width/2.0, [[self.window contentView] frame ].size.height/2.0);
self.client.layer = layer2;
CALayer *servedLayer = [CALayer layerWithRemoteClientId: self.client.clientId];
[[[self.window contentView] layer] addSublayer: servedLayer];
}
을, 그러나 나는 시도하고 프로세스 간의 유사한 일을하고 싶습니다 :
나는이의 라인을 따라 몇 가지 코드로, 하나의 프로세스 내에서 성공적으로 사용할 수 있습니다. server.serverPort가 mach_port_t 유형이라는 사실은 프로세스간에 사용하기에 적합하다는 것을 의미합니다.
그러나 두 프로세스 (두 개의 개별 응용 프로그램 또는 주 프로세스와 XPC 서비스)에서 실행되도록이 코드를 분할하면 다른 프로세스의 서버에서 mach_port_t를 사용하여 CARemoteLayerClient를 초기화하려고 할 때 내가 얻을 :
unable to register with server: 0x10000003
그것은 잘 그들이 무작위적인 과정 사이에 적합하지 않을 수 있지만, mach_port_t의 사용은 좀 것을 의미한다.
누구나 프로세스간에 이러한 클래스를 사용하여 성공한 사람이 있습니까?
특히 작업 데모에서 많은 도움을 주셨습니다. 정말 대단했습니다. 나는 마하 포트가 소켓 포트처럼 작동한다는 잘못된 가정을하고 있었다. 분명히 내부 책과 더 많은 시간을 할애해야합니다! – Michael
그냥 피곤하고 데모가 더 이상 작동하지 않습니다 - Xcode 7.2 - OSX 10.11.2 – Jimmy
여기에 설명되어 있습니다 - https://github.com/krevis/RemoteLayerDemo/issues/2 – Jimmy