iOS:数据文件的单例模式
类名MyData有75个以上的属性,这些属性在7个场景中都是必需的 目前,我通过MyData文件的实例传递以下代码: 在SceneOne中:iOS:数据文件的单例模式,ios,singleton,Ios,Singleton,类名MyData有75个以上的属性,这些属性在7个场景中都是必需的 目前,我通过MyData文件的实例传递以下代码: 在SceneOne中: MyData *myData = [[MyData alloc]init]; -(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { UIViewController *destinationViewController = segue.destinationV
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实现上述目标
MyData.h
#import <foundation/Foundation.h>
@interface MyData : NSObject {
@property (nonatomic, retain) NSString *someProperty;
// 74 other properties
+ (id)sharedData;
@end
问题1:在任何场景中,上面的代码是否可以使用下面的代码访问同一实例:
MyData *myData = [MyData sharedData];
问题2:我仍然可以以myData.anyProperty
的身份访问文件吗
问题3:如何触发MyData的新实例并删除当前实例
问题4:我正在从网上下载一个myData文件,它是myData类的副本,但属性包含数据,我希望Singelton提供一个新实例,其中包含下载文件中的数据,代码是什么<代码>即myData=[新下载的文件副本]代码>
问题5:与我目前的方法相比,使用单例方法是否有优势
reset
方法吗player
的属性,其方法声明如下:
- (Player *)currentPlayer;
- (Player *)currentPlayerForConfiguration:(NSInteger)configuration;
- (Player *)currentPlayerUsingLocalData:(BOOL)useLocalData;
如果您有多个可用配置,您将向方法接口和实现添加一个参数,如下所示:
- (Player *)currentPlayer;
- (Player *)currentPlayerForConfiguration:(NSInteger)configuration;
- (Player *)currentPlayerUsingLocalData:(BOOL)useLocalData;
您可以决定使用数字、字符串或其他东西来区分数据的不同配置。如果使用数字,0可以是本地的,1可以是远程的,2可以是任意一个(例如,首先检查本地数据,如果没有,则检查远程数据)。如果只有两个选项,则可以使用BOOL
并如下定义方法:
- (Player *)currentPlayer;
- (Player *)currentPlayerForConfiguration:(NSInteger)configuration;
- (Player *)currentPlayerUsingLocalData:(BOOL)useLocalData;
非常感谢。三个人。在场景7的末尾,当用户完成该过程时,我不再需要myData文件中包含的数据。那么,您是否建议我添加一个重置方法并手动设置myData.property=NULL;相反四个人。你能详细说明一下MyData的接口(标题)吗?我更新了我的答案,提供了关于这些方面的更多细节。让我知道这对你是如何起作用的。