我的项目中有1个模型,它从rss中搜索解析数据。我想从我的控制器调用这些数据。 Bun我不想创建另一个模型的instens。根本没有关于互联网的信息。
答案 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];
每次调用它时,它都会反复给你相同的实例