对象在视图控制器中共享

我想知道如何在几个视图控制器中共享NSDictionary对象,这些视图控制器基本上都是我的应用程序中的选项卡。

我尝试使用一种协议,就像在Java中一样,这样我就可以投射到协议并访问该属性。 这似乎并不奏效。

此外,我还看过如何在多个视图控制器之间共享全局数据的类似问题

但我发现appDelegate方法不安全,可能会导致内存泄漏。

类似地,将A类注入到B类也会产生同样的问题。

所以任何人都可以向我推荐任何我应该在代码中学习或实现的方法吗?


如果你只想分享Dictionary,为什么不从辅助类中去使用类方法。

+(NSDictionary *)shareMethod
{
return dict;
} 

你可以使用单例类来分享数据
检查这个Singleton类

MyManger.h

#import <foundation/Foundation.h>

@interface MyManager : NSObject {
NSMutableDictionary *_dict
}

@property (nonatomic, retain) NSMutableDictionary *dict;

 + (id)sharedManager;  
@end 

MyManger.m

#import "MyManager.h"

static MyManager *sharedMyManager = nil;

 @implementation MyManager

 @synthesize dict = _dict;

#pragma mark Singleton Methods  

+ (id)sharedManager {
 @synchronized(self) {
    if(sharedMyManager == nil)
      sharedMyManager = [[super allocWithZone:NULL] init];
 }
return sharedMyManager;
} 

- (id)init {
   if (self = [super init]) {
  dict = [[NSMutableDictionary alloc] init];
   }
 return self;
}   

你可以像这样在任何地方访问你的字典

   [MyManager sharedManager].dict

我找到了一条出路。 既然我想要一个字典共享,我在协议中声明了一个方法

- (void) setSingleHouse:(NSDictionary*) singleHouse;

在我的每个控制器中,我都以适当的方式实施了该方法。 因此我现在可以分享他们。

我还发现我早些时候以错误的方式投射,即(@protocol(协议名称))。 现在将其更改为NSObject。

对不起,大惊小怪。

链接地址: http://www.djcxy.com/p/52407.html

上一篇: object sharing among view controllers

下一篇: How can I share a model between multiple storyboard views?