Ios 哪一个?viewmodel的KVO或块通知MVVM中的控制器?
例如,我有一个ModelPerson和一个ViewModelPersonViewModel PersonViewModel保持Person。控制器保持PersonViewModel PersonViewModel为当前视图提供数据,如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//
-(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都不会被释放。