Mac OS X LionのCARemoteLayerServerおよびCARemoteLayerClientがQuartzCoreに追加されました。私は、それらが複数のプロセス間でグラフィカルアプリケーションを分割するのに適しているかどうかを調査しようとしていましたが、成功しませんでした。いいですプロセス間でCARMoteLayerServerと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型であるということは、プロセス間での使用に適していることを意味します。
しかし、2つのプロセス(2つの個別のアプリケーションまたはメインプロセスとXPCサービス)でそのコードを分割すると、他のプロセスのサーバーからmach_port_tを使用してCARemoteLayerClientを初期化しようとすると私は:
unable to register with server: 0x10000003
ランダムプロセスの間には適していないかもしれませんが、mach_port_tちゃんの使用はそのことを意味します。
他の誰もプロセス間でこれらのクラスを使用して成功しましたか?
多くのありがとう、特に作業デモでは、非常に素晴らしいです。私はmachポートがソケットポート(あなたが回ることができる)のように働くことに関して悪い仮定をしていました。明らかに私はInternalsの本とより多くの時間を費やす必要があります! – Michael
だけで疲れてデモは、もはや作品 - Xcodeの7.2 - OSX 10.11.2 – Jimmy
修正がここで説明されて - https://github.com/krevis/RemoteLayerDemo/issues/2リマインダー用 – Jimmy