2
私はPyObjCで分散オブジェクトを使用して簡単な例を作ろうとしています。サーバー側では、私は(Xcodeで)持っている:私はそれを実行するとCocoa/PyObjC分散オブジェクトのためのものがありません
class VendedObject(NSObject):
@objc.signature('@[email protected]:')
def speak(self):
return 'woof'
class TalkAppDelegate(NSObject):
def applicationDidFinishLaunching_(self, sender):
NSLog("Application did finish launching.")
conn = NSConnection.defaultConnection()
NSLog("Creating connection")
obj = VendedObject.alloc().init()
print obj.description()
conn.setRootObject_(obj)
result = conn.registerName_("my_server")
if not result:
NSLog("Failed to register Name")
#conn.setDelegate_(self)
NSLog(conn.description())
私が取得:クライアント側では
2011-01-27 10:27:55.695 Talk[34432:a0f] Application did finish launching.
2011-01-27 10:27:55.698 Talk[34432:a0f] Creating connection
<VendedObject: 0x3e45970>
2011-01-27 10:27:55.701 Talk[34432:a0f] (** NSConnection 0x28f2030 receivePort <NSMachPort: 0x28f2160> sendPort <NSMachPort: 0x28f2160> refCount 2 **)
を私は持っている:
class ListenAppDelegate(NSObject):
def applicationDidFinishLaunching_(self, sender):
NSLog("Application did finish launching.")
proxy_obj = NSConnection.rootProxyForConnectionWithRegisteredName_host_(
"my_server", None)
if not proxy_obj:
print 'Did not get an object from the server.'
else:
print proxy_obj.description()
print proxy_obj.speak()
私が手:
2011-01-27 10:28:35.821 Listen[34460:a0f] Application did finish launching.
<VendedObject: 0x3e45970>
2011-01-27 10:28:35.829 Listen[34460:a0f] -[OC_PythonString initWithBytes:length:encoding:]: unrecognized selector sent to instance 0x3635130
2011-01-27 10:28:35.832 Listen[34460:a0f] -[OC_PythonString initWithBytes:length:encoding:]: unrecognized selector sent to instance 0x3635130
私は何かを欠いているが、kをしていないそれで?
EDIT:私が正しい署名であると思われるものを使用するように修正し、発生する新たな問題を示します。おかげさまで
cool! talk()にNSString引数を追加しようとしましたが、NSInvalidArgumentExceptionで失敗しました。私はこのように話しています:proxy_obj.speak(NSString.stringWithString _( "Notification")) – Ali