类名 MyData 有 75 个以上的属性,这些属性在 7 个场景中都需要。
目前,我使用以下代码传递 MyData 文件的实例:
在 SceneOne 中:
MyData *myData = [[MyData alloc]init];
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
UIViewController *destinationViewController = segue.destinationViewController;
SceneTwo *sceneTwo = [destinationViewController isKindOfClass:[SceneTwo class]] ? (SceneTwo*)destinationViewController : nil;
sceneTwo.myData = self.myData;
}
这使我可以访问任何属性myData.anyProperty
当第 7 个场景被关闭时,我设置 myData = NULL,应用程序返回到 SceneOne 并初始化 MyData 的新实例。
我正在尝试通过 sharedInstance 完成上述操作。
我的数据.h
#import <foundation/Foundation.h>
@interface MyData : NSObject {
@property (nonatomic, retain) NSString *someProperty;
// 74 other properties
+ (id)sharedData;
@end
我的数据
#import "MyData.h"
@implementation MyData
@synthesize someProperty;
+ (id)sharedData {
static Mydata *sharedData = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedData = [[self alloc] init];
});
return sharedData;
}
@end
问题 1: 上面的代码是否可以在任何场景中使用下面的代码访问同一个实例:
MyData *myData = [MyData sharedData];
问题 2: 我仍然可以访问文件myData.anyProperty
吗?
问题3: 如何触发MyData的新实例并删除当前实例?
问题 4: 我正在从网络上下载一个 myData 文件,它是 MyData 类的副本,但属性包含数据,我希望 Singelton 提供一个新实例,其中包含下载文件中的数据,那么代码是什么? i.e myData = [newDownloadedFile copy];
问题 5: 使用 Singleton Method Vs. 是否有优势?我现在的方法?