Ios 为什么KVO不能处理UIView子类?

Ios 为什么KVO不能处理UIView子类?,ios,cocoa-touch,uiview,key-value-observing,Ios,Cocoa Touch,Uiview,Key Value Observing,我有一个UIView子类,该子类又有一个contentView,在public头中声明为: @property (nonatomic,retain)UIVivew* contentView; 我试图在contentView的帧发生更改时获取KVO通知,但在我的UIView子类中从未调用过observeValueForKeyPath方法: @implementation MyView @synthesize contentView = _contentView; - (id)initWi

我有一个UIView子类,该子类又有一个contentView,在public头中声明为:

@property (nonatomic,retain)UIVivew* contentView;
我试图在contentView的帧发生更改时获取KVO通知,但在我的UIView子类中从未调用过observeValueForKeyPath方法:

@implementation MyView


@synthesize contentView = _contentView;


- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code

        [self.contentView addObserver:self 
                           forKeyPath:@"frame" 
                              options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld) 
                              context:nil];
    }   
    return self;
}

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
    if ([keyPath isEqualToString:@"frame"]) {
        CGRect newContentFrame = [[change objectForKey:NSKeyValueChangeNewKey] CGRectValue];
        CGRect selfNewFrame = self.frame;
        selfNewFrame.size = CGSizeMake(newContentFrame.size.width + 10, newContentFrame.size.height + 10);
        self.frame = selfNewFrame;
    }

    [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
}

关于KVO为什么不点火有什么想法吗?

对不起。。。睡眠剥夺我想


忘了分配/初始化contentView。

这样就解决了问题?如果可以,请选择它作为答案-谢谢!