A colossal Dreamer: GR鐵塔-天生我材

Debugging CoreData with symbolic break 본문

Development/아이폰

Debugging CoreData with symbolic break

江多林 2023. 1. 11. 10:51

 

symbolic break: -[NSManagedObject setValue:forKey:]

 

rxApp 에서는 state 변경하는 binding(Publisher 체인)과

변경된 state 를 UI 에 반영하는 binding(Publisher 체인)이

분리되어 있게 되므로

 

UI에 반영하는 binding 이 동작했을 때 잘못된 것을 인지하게 되므로,

state 를 변경하는 binding 을 찾기 위해서는 state 변경이 트리거 되는 위치를 찾아야 하지만,

본인의 관점과 binding 설계자와 관점이 달라

의외의 시점에 trigger 되는 경우 코드를 훑어보아 확인하기 어렵게 된다.

 

이 경우 app MVC 로 구성한 경우에 ViewController 에서 lifecycle 과 @UIAction UIEvent 로부터

트리거 시점을 훑어보는 것으로 확인할 수 있었다.

 

그럼에도 Storage (manager, center) 의 I/F 가 인식하기 쉽다면,

해당 동작을 구성하기 어렵지 않을 것이고,

(추가로 open code 라면, break 를 걸어서 파악할 수 있다.)

 

그러나, Storage 가 CoreData.NSManagedObjectContext 라면,

생성 시점을 잡아내기 어렵다.

(NSManagedObject 생성방법이 다양하기 때문에...)

(또, 코드가 공개되어 있지 않고, 실제 구현체는 단지 proxy 이기 때문에 init 시점을 파악할 수 없다.)

 

이 때 위의 symbolic break 를 활용하면,

생성된 Entity 에 값이 설정되는 시점에 break point 를 걸 수 있다.