Ios 哪一个?viewmodel的KVO或块通知MVVM中的控制器?

Ios 哪一个?viewmodel的KVO或块通知MVVM中的控制器?,ios,mvvm,block,key-value-observing,Ios,Mvvm,Block,Key Value Observing,例如,我有一个ModelPerson和一个ViewModelPersonViewModel PersonViewModel保持Person。控制器保持PersonViewModel PersonViewModel为当前视图提供数据,如 -(nsstring*)personNameInChinese; 但是我不知道如何在模型更改时通知控制器,特别是在asyc功能更改后。是KVO还是BLock 例如,PersonViewModel有一个func:-(void)refreshPersonInfo//

例如,我有一个ModelPerson和一个ViewModelPersonViewModel

PersonViewModel保持Person。控制器保持PersonViewModel

PersonViewModel为当前视图提供数据,如

-(nsstring*)personNameInChinese;
但是我不知道如何在模型更改时通知控制器,特别是在asyc功能更改后。是
KVO还是BLock

例如,PersonViewModel有一个func:
-(void)refreshPersonInfo//它将启动一个网络请求

有两种选择: 1.为
PersonViewModel
设置一个
refreshCompleteBlock
,并在该块中添加refresh view的代码,控制器在调用start refresh func之前设置该块


2.为PersonViewModel添加类似“isRefreshing”的
BOOL
属性,添加控制器观察“isRefreshing”,当它更改时,刷新视图块看起来比KVO更干净。不过,您需要确保的唯一一件事是不要持有对块的强引用,并将强self作为param传递给块,在这种情况下,块和self都不会被释放。块看起来比KVO更干净。不过,您需要确保的唯一一件事是不要持有对block的强引用,并将强self作为param传递给block,在这种情况下,block和self都不会被释放。