我长期以来一直在使用MVC模式,但我不确定我是否在iOS中正确地使用了这个模式。
以下是我的理解和源代码,我用它来将模型、视图和控制器分离:
描述:
1. 模型(例如 - MyModel类) 模型就是我的数据。我使用模型来定义计算、从互联网获取数据,然后通过NSNotificationCenter通知控制器模型的更改。
2. 控制器(例如 - MyController类) 控制器可以直接联系请求其模型数据,并直接显示在视图中。
3. 视图(例如 - MyView类) 视图负责显示和收集用户事件。视图可以通过目标操作和委托与控制器交互。
代码:
class MyModel:NSObject
以下是我的理解和源代码,我用它来将模型、视图和控制器分离:
描述:
1. 模型(例如 - MyModel类) 模型就是我的数据。我使用模型来定义计算、从互联网获取数据,然后通过NSNotificationCenter通知控制器模型的更改。
2. 控制器(例如 - MyController类) 控制器可以直接联系请求其模型数据,并直接显示在视图中。
3. 视图(例如 - MyView类) 视图负责显示和收集用户事件。视图可以通过目标操作和委托与控制器交互。
代码:
class 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;
}
我的控制器: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中这种方法的错误在哪里。