3

在應用程序的某個位置,我的對象中的屬性被設置爲一個奇怪的值。通常情況下,我會通過設置一個類似的象徵斷點調試這樣的事情:是否可以使用動態屬性設置符的符號斷點(或類似符號)?

enter image description here

這樣,當有人試圖將該屬性設置爲我在尋找的價值,我得到一擊和我可以看看這個痕跡,看看它是從哪裏來的。

不幸的是,當您處理聲明爲@dynamic的屬性時,這不起作用。有沒有其他方法可以做類似的事情?

更多信息

有問題的對象是NSManagedObject

本項目採用RestKit其很有可能這就是價值的來源。

+0

我猜你已經嘗試過自己實現setter,並在那裏放置一個斷點? – Lance 2014-12-03 19:30:27

+0

@Lance - 我沒有試過。我不知道爲什麼我認爲你不能覆蓋NSManagedObject上'@ dynamic'屬性的setter。我只是試了一下,它的工作。我想我應該看得更遠!如果你想更徹底地解釋它,並將其添加爲答案,我會繼續接受。謝謝! – Logan 2014-12-03 19:38:19

回答

2

你可以自己實現setter,並在那裏放置一個斷點。實現核心數據屬性設置器與正常情況有點不同。這樣的事情應該工作:

- (void)setFoo:(NSObject *)foo { 
    [self willChangeValueForKey:@"foo"]; 
    [self setPrimitiveValue:foo forKey:@"foo"]; 
    [self didChangeValueForKey:@"foo"]; 
} 
+3

執行此操作後,符號斷點也會被觸發。謝謝 – Logan 2014-12-03 20:07:31