【发布时间】:2014-11-06 10:29:27
【问题描述】:
我正在尝试将随机类中的一些数据添加到我的 viewController,
所以为了始终保持相同的数据,我在我的 UIViewController 上做了一个单例,但它不起作用我从来没有在我的 tableview 上获得数据。
这是我添加到 UIViewController 中的内容:
+(id)sharedMBVC {
static MBViewController *sharedMBVC ;
@synchronized(self) {
if (!sharedMBVC)
sharedMBVC = [[MBViewController alloc] init];
return sharedMBVC;
}
}
在我的课堂上,我通过这样做来称呼它:
MBViewController *vc = [MBViewController sharedMBVC];
我是否必须在某处设置我的 NSArrays 的内容,它们在 viewcontroller 的 viewDidLoad 中声明?或者还有其他事情要做。
PS:我在vc = (MBViewController *)[[[[UIApplication sharedApplication] delegate] window] rootViewController]; 之前在课堂上做,但现在我的 uiviewcontroller 不再是 rootview,这就是为什么我试图找到其他方法来访问它,我想最好的解决方案是做一个单例
你们能帮帮我吗
【问题讨论】:
-
不要这样做。这是不好的。是什么让你想使用单例? 有一种更好的方法。
-
@Fogmeister 主要的 pb 是现在我使用 AMSlideMenu,他的 MainVC 变成了 rootview,所以现在我没有如何访问我的 MBViewController 方法:s 我希望始终拥有当前的 MBViewController 和他的NSArrays 更新
-
为什么需要从任何地方访问 MBViewController?只是为了获取数组吗?
-
@fourthnovember,好吧,我认为,从架构的角度来看,这些数组不属于 VMBiewController。我会将它们分离到一个数据层(例如某种 DataSource 类),并在您需要的任何地方保留对 DataSource 的引用。看看 Apple 的Second iOS App tutorial。它包含一个简单的数据层实现示例。
-
viewController + singleton = 这将破坏与视图控制器工作方式有关的一切。首先默认回到单例是一个坏主意。使 viewController 成为单例,我什至不知道会因此而中断。
标签: ios objective-c iphone uitableview uiviewcontroller