如何在控制器之间使用模型

时间:2013-08-18 03:32:36

标签: ios objective-c xcode

我的项目中有1个模型,它从rss中搜索解析数据。我想从我的控制器调用这些数据。 Bun我不想创建另一个模型的instens。根本没有关于互联网的信息。

3 个答案:

答案 0 :(得分:1)

为什么不使用房产?

//In SomeViewController.h

@property (nonatomic, strong) SomeClass *data;

然后,无论您需要传递它,可能在您以模态方式呈现控制器或在导航控制器上推送它之前

SomeViewController *instance = [[SomeViewController alloc] init];
instance.data = myReferenceToData;

这不会创建模型的两个副本,它只是将对象的引用传递给视图控制器,以便它可以访问它。

另一个选择是使用Singleton模式(google是你的朋友)。我更喜欢第一种方法,但有时Singletons很方便:)

答案 1 :(得分:1)

你可以制作一个方法:initWithData:(Data*) _data 在视图控制器上创建一个属性,如下所示:

@property (strong, nonatomic) Data *data

对于initWithData方法:

//synthesize your data first
-(id)initWithData:(Data*)_data
{
     self = [super init];
     if (self)
     {
         self.data = _data;
     }
     return self;
}

请记住在.h文件中包含initWithData函数的原型。您还可以将Data更改为您要使用的任何数据类。

答案 2 :(得分:0)

每次需要时都不需要创建对象的新实例, 您可以创建一个可以在应用中的任何位置访问的全局实例

检查此代码:

#import "myClass.h"
@implementation myClass

+(id)sharedObject{
    static myClass *myClassObject = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        myClassObject = [[self alloc] init];
        //build stuff
        //build another stuff
    });
    return myClassObject;
}

现在当你需要上课时:

[myClass sharedObject];

每次调用它时,它都会反复给你相同的实例