2011-10-20 13 views
1

私はNSDistantObjectクラスオブジェクトの配列を持っています。 oboveコードのNSStringFromClassとNSDistantObjectクラスのisKindofClass

NSLog(@"%@", [[saveClassObject objectAtIndex:0] connectionForProxy]); 
     NSLog(@"%@", NSStringFromClass([[saveClassObject objectAtIndex:0] class])); 
     if ([[saveClassObject objectAtIndex:0] isKindOfClass:[NSDistantObject class]]) { 
      NSLog(@"Yes"); 
     } 
     else { 
      NSLog(@"NO"); 
     } 

出力

2011-10-20 20:49:58.841 DistributedServer[4239:a0f] (** NSConnection 0x10013ec80 receivePort <CFSocket 0x1001133d0 [0x7fff70289ee0]>{valid = Yes, type = 1, socket = 3, socket set count = 140733193388036, 
    callback types = 0x2, callout = __NSFireSocketAccept (0x7fff8254e74a), source = 0x10010abb0, 
    run loops = <CFArray 0x10015f930 [0x7fff70289ee0]>{type = mutable-small, count = 4, values = (
    0 : <0x100112870> 
    1 : <0x100112870> 
    2 : <0x1001126a0> 
    3 : <0x1001126a0> 
)}, 
    context = <CFSocket context 0x1002000b0>} sendPort <02010610 1002c323 c0a801ae 00000000 00000000> refCount 3 **) 
2011-10-20 20:49:58.842 DistributedServer[4239:a0f] NSDistantObject 
2011-10-20 20:49:58.844 DistributedServer[4239:a0f] NO 

NSStringFromClass戻りsaveClassObjectアレイはNSDistantObjectクラス・オブジェクトが含まれています。 isKindofClassは同じものに対してNoを返します。どうして?

答えて

4

NSProxy-isKindOfClass:forwardInvocation:となります。プロキシ自体ではなく、プロキシが存在するオブジェクトのクラスをテストすることを意図しています。

  • あなたが持っているオブジェクトがプロキシであるかどうかを確認するには、代わりにisProxyを使用します。
  • プロキシのクラスを確認するには、class[NSDistantObject class]に等しいかどうかを確認するか、isSubclassOfClass:に電話してください。
関連する問題