44 return class_createInstance(
self);
47 + (BOOL)respondsToSelector:(
SEL)selector
49 return !!class_getInstanceMethod(
isa, aSelector);
52 - (CPMethodSignature)methodSignatureForSelector:(
SEL)aSelector
55 reason:@"-methodSignatureForSelector: called on abstract CPProxy class."];
61 reason:@"-forwardInvocation: called on abstract CPProxy class."];
65 - (void)forward:(
SEL)aSelector :(marg_list)args
67 return [
CPObject methodForSelector:_cmd](
self, _cmd, aSelector, args);
77 if (typeof
self._UID ===
"undefined")
78 self._UID = objj_generateObjectUID();
85 return self === anObject;
100 return class_getSuperclass(
isa);
103 - (id)performSelector:(
SEL)aSelector
105 return objj_msgSend(
self, aSelector);
108 - (id)performSelector:(
SEL)aSelector withObject:(
id)anObject
110 return objj_msgSend(
self, aSelector, anObject);
113 - (id)performSelector:(
SEL)aSelector withObject:(
id)anObject withObject:(
id)anotherObject
115 return objj_msgSend(
self, aSelector, anObject, anotherObject);
123 - (BOOL)isKindOfClass:(Class)aClass
130 return [invocation returnValue];
133 - (BOOL)isMemberOfClass:(Class)aClass
140 return [invocation returnValue];
143 - (BOOL)respondsToSelector:(
SEL)aSelector
145 var signature = [
self methodSignatureForSelector:_cmd],
148 [
self forwardInvocation:invocation];
150 return [invocation returnValue];
155 return "<" + class_getName(
isa) +
" 0x" + [
CPString stringWithHash:[
self UID]] +
">";