KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I am experimenting in adding functionality to my UIViews (configuring CALayers according to state) by setting up a NSProxy subclass to stand in for any UIView I choose. Here's what I've tried: In my NSProxy subclass, I have the following code: #pragma mark Initialization / Dealloc - (id)initWithView:(UIView *)view { delegate = view; [delegate retain]; return self; } - (void)dealloc { [delegate release]; [super dealloc]; } #pragma mark Proxy Methods - (void)forwardInvocation:(NSInvocation *)anInvocation { [anInvocation setTarget:delegate]; [anInvocation invoke]; return; } - (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector { return [delegate methodSignatureForSelector:aSelector]; } - (BOOL)respondsToSelector:(SEL)aSelector { BOOL rv = NO; if ([delegate respondsToSelector:aSelector]) { rv = YES; } return rv; } And, using my NSProxy subclass this way: UILabel *label = [[HFMultiStateProxy alloc] initWithView:[[[UILabel alloc] initWithFrame:cellFrame] autorelease]]; label.text = text; label.font = font; label.textAlignment = UITextAlignmentCenter; label.backgroundColor = [UIColor clearColor]; label.opaque = NO; [self addSubview:label]; Seems to work until I hit the addSubview: line. Turning message tracing on ( instrumentObjcMessageSends(YES); ) shows the forwarding for each of the previous messages working until deep inside of the addSubview:, where this series of method calls show up in the log (the first message shown here was invoked via the proxy): - UILabel UIView _makeSubtreePerformSelector:withObject: - UILabel UIView _makeSubtreePerformSelector:withObject:withObject:copySublayers: - CALayer CALayer sublayers - NSMethodSignature NSMethodSignature methodReturnType - NSMethodSignature NSMethodSignature _argInfo: - NSMethodSignature NSMethodSignature _frameDescriptor + UILabel NSObject reso
Tags (comma-separated)
Save Edits
Cancel