2013-07-10 22 views
0

我正在訂閱來自對象的KVO通知。我好像正在接收不應該改變的對象的關鍵路徑的通知。如何調試對象發送KVO通知的原因?

什麼是確定如何更改這些對象(即通過什麼代碼)導致通知被髮送的最佳方式。

理想情況下,可以追溯到更改導致KVO通知的對象的代碼行。這可能嗎?

+2

也許這可能有所幫助:http://stackoverflow.com/questions/15648024/any-way-to-see-who-is-triggering-changes-re-key-value-observing –

回答

1

對我來說太愚蠢了,實際上你可以在觀察者中設置一個斷點並查看堆棧跟蹤。

+0

這是規範的方法,是。 – ipmcc

0

比方說,你有UIButton,你想知道它改變了框架的代碼。

你可以使UIButton的子類覆蓋它的setFrame:方法。接下來,只需初始化MyButton類而不是UIButton類。

#import "MyButton.h" 

@implementation MyButton 

- (void)setFrame:(CGRect)frame 
{ 
    [super setFrame:frame]; // set the breakpoint here 
} 

@end 

現在每次的UIButton的框架改變,你會停在斷點和u就能看堆棧跟蹤並調查哪些代碼導致幀的變化時間。