我正在訂閱來自對象的KVO通知。我好像正在接收不應該改變的對象的關鍵路徑的通知。如何調試對象發送KVO通知的原因?
什麼是確定如何更改這些對象(即通過什麼代碼)導致通知被髮送的最佳方式。
理想情況下,可以追溯到更改導致KVO通知的對象的代碼行。這可能嗎?
我正在訂閱來自對象的KVO通知。我好像正在接收不應該改變的對象的關鍵路徑的通知。如何調試對象發送KVO通知的原因?
什麼是確定如何更改這些對象(即通過什麼代碼)導致通知被髮送的最佳方式。
理想情況下,可以追溯到更改導致KVO通知的對象的代碼行。這可能嗎?
比方說,你有UIButton,你想知道它改變了框架的代碼。
你可以使UIButton的子類覆蓋它的setFrame:方法。接下來,只需初始化MyButton類而不是UIButton類。
#import "MyButton.h"
@implementation MyButton
- (void)setFrame:(CGRect)frame
{
[super setFrame:frame]; // set the breakpoint here
}
@end
現在每次的UIButton的框架改變,你會停在斷點和u就能看堆棧跟蹤並調查哪些代碼導致幀的變化時間。
也許這可能有所幫助:http://stackoverflow.com/questions/15648024/any-way-to-see-who-is-triggering-changes-re-key-value-observing –