Я давно работаю с MVC, но не уверен, что правильно использую этот шаблон в iOS.
Это мое понимание и исходный код, который я использую для подразделений в представлении модели и контроллере.
Описание:
Модель (например - класс MyModel)
Модель это мои данные. Я использую модель для определенных расчетов, получения данных из Интернета и далее уведомляю контроллер об изменениях в модели, например, через NSNotificationCenter.
Контроллер (например - класс MyController)
Контроллер может напрямую связаться с запросом данных своей модели и перейти непосредственно к отображаемому дисплею.
Вид (например - класс MyView)
Просмотр - отображение и сбор событий от пользователей. View может взаимодействовать с контроллером через target-action и делегат.
Код:
класс MyModel: NSObject
.h ... (some header code)
.m
Initialization method...
// method for get data from internet
-(NSData *)my_getDataFromInternet:(NSURL *)url{
NSData *data=[NSData dataWithContentsOfURL:url];
return data;
}
класс MyController: UIVIewController
#import "MyView.h"
.h
MyView * my_view;
#import "MyData.h"
.m
Initialization method...
- (void)init{
my_view = [[MyView alloc]init];
my_view.my_target = self;
self.view = my_view;
}
-(void)mycontrolleraction{
MyData * my_data = ...
[my_data my_getDataFromInternet:some_url_image];
my_view.my_image = [UIImage imageWithData:self.my_data];
}
класс MyView: UIView
.h
UIImage * my_image;
property(nonatomic, assign)id my_target;
.m
Initialization method...
- (void)initWithFrame{
UIButton * my_button = ...
[button addTarget:my_target ....
my_image = ...
[self addSubview:my_image];
[self addSubview:my_button];
}
Я добавляю цель к моей кнопке - my_target (my_target - это мой MyController). Когда пользователь нажимает на мою кнопку - метод выполняется в MyController и запрашивает данные из моего класса MyData.
Я хотел бы знать, где моя ошибка в использовании этого метода в MVC.