我正在使用MVC设计模式实现iOS应用程序。
该应用程序有5个接口,我以这种方式继续:
在模型中,我实现了一种向Web服务发送消息以请求数据的方法。 根据MVC,Controller必须从Model接收数据并将它们发送到View,因此在Controller中我实现了一个调用Model方法的方法。 在视图中,我实例化一个对象Controller并调用Controller方法。 当应用程序启动时,Xcode只启动AppDelegate(Controller)方法的命令,而不读取对Model方法的调用。
如果推理被扭曲,我道歉。总结:// AppDelegate.h
#import "WebServiceModel.h"
@interface AppDelegate: UIResponder <UIApplicationDelegate> {
WebServiceModel *model;
}
@property (retain, nonatomic) WebServiceModel *model;
- (void) func;
_________________
// AppDelegate.m
@implementation AppDelegate
@syntesize model;
- (void) func {
NSLog(@"OK!");
[model function];
}
@end
_________________
// WebServiceModel.h
#import "AppDelegate.h"
@interface WebServiceModel: NSObject <NSXMLParserDelegate> {
AppDelegate *controller;
}
- (void) function;
_________________
// WebServiceModel.m
@implementation WebServiceModel
- (void) function {
NSLog(@"YES!");
//other instructions
}
@end
_________________
// View Controller.h
#import "AppDelegate.h"
@interface ViewController: UIViewController {
AppDelegate *controller;
}
_________________
// ViewController.m
@implementation ViewController
- (void) viewDidLoad {
NSLog(@"OH!");
controller = (AppDelegate *) [[UIApplication sharedApplication] delegate];
[controller func];
}
@end
当应用程序启动时,在“所有输出”中,您只能看到“OH!”和“OK!”,但没有“是的!”。
因为Model的方法“function”没有被调用?
感谢那些回答我的人!
答案 0 :(得分:0)
你实际上并没有创建模型对象的实例,所以实际发生的是你在nil上调用-function。修复此问题很简单,将以下方法添加到AppDelegate:
- (id)init
{
self = [super init];
if (nil != self)
{
self.model = [[WebServiceModel alloc] init];
}
return self;
}