2011-10-20 28 views
1

我有NSDistantObject類對象的數組。NSDistantObject類的NSStringFromClass和isKindofClass

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

輸出爲obove代碼是

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返回否。爲什麼?

回答

4

NSProxy-isKindOfClass:來電forwardInvocation:。它旨在測試代理所代表的對象的類,而不是代理本身。

  • 要檢查您擁有的對象是否是代理,您可能需要改爲使用isProxy
  • 要檢查代理的類,您可以檢查它是否class等於[NSDistantObject class]或致電isSubclassOfClass:
相關問題