Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将数据传递给应用程序委托_Ios_Objective C - Fatal编程技术网

Ios 将数据传递给应用程序委托

Ios 将数据传递给应用程序委托,ios,objective-c,Ios,Objective C,我有一个类TouchDrawView,它包含NSMutableArray*completeLines。 现在,当应用程序终止时,我想将这个数组保存到文件(我知道 如何保存,我已经将其编写为类TouchDrawView的saveArray方法 我的问题是,在appDelegate中,我想覆盖sayapplicationidenterbackground调用TouchDrawView类对象上的saveArray方法,将数组保存到我提到的文件中 你看到我的问题了吗?如何将TouchDrawView的实

我有一个类
TouchDrawView
,它包含
NSMutableArray*completeLines。
现在,当应用程序终止时,我想将这个数组保存到文件(我知道
如何保存,我已经将其编写为类
TouchDrawView
saveArray
方法

我的问题是,在
appDelegate
中,我想覆盖say
applicationidenterbackground
调用
TouchDrawView
类对象上的
saveArray
方法,将数组保存到我提到的文件中

你看到我的问题了吗?如何将
TouchDrawView
的实例传递给
app delegate
,以便后者可以在其上调用
saveArray
方法?e、 g

- (void)applicationDidEnterBackground:(UIApplication *)application
{

    [touchDrawViewObject saveArray]; // how to get this object?

}

另外,到目前为止,我一直在试图避免使用单例/静态数据,只是想知道如何使用其他方法。

通过让TouchDrawView观察
UIApplicationIdentinterBackgroundNotification
通知,您可以在不连接appDelegate的情况下使用它。当应用程序进入后台时触发

您可能不希望在应用程序中使用不同的保存方法,但这取决于应用程序的构建方式

例如:

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(saveMethod:)
                                             name:UIApplicationDidEnterBackgroundNotification
                                           object:nil];

通过让TouchDrawView观察
UIApplicationIdentinterBackgroundNotification
通知,您可以在不连接appDelegate的情况下完成此操作。当应用程序进入后台时触发

您可能不希望在应用程序中使用不同的保存方法,但这取决于应用程序的构建方式

例如:

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(saveMethod:)
                                             name:UIApplicationDidEnterBackgroundNotification
                                           object:nil];

TouchDrawView只会有一个实例吗?听起来你并不是在遵循MVC设计模式。数据不应包含在视图类中。@特洛伊敌人:这是一个自定义视图,我正在保存它必须在
drawRect
中绘制的行,我将在其他地方存储它们…您将它们存储在M(model)位。正如@特洛伊敌人建议的那样,让一个模型来处理保存。完成绘图后,将其发送到要处理的模型以进行保存。例如,如果您的应用程序崩溃,则不会调用ApplicationIdentinterBackground:但使用model方法将允许您已经保存绘制的数据。TouchDrawView是否只有一个实例?听起来您没有遵循MVC设计模式。数据不应包含在视图类中。@特洛伊敌人:这是一个自定义视图,我正在保存它必须在
drawRect
中绘制的行,我将在其他地方存储它们…您将它们存储在M(model)位。正如@特洛伊敌人建议的那样,让一个模型来处理保存。完成绘图后,将其发送到要处理的模型以进行保存。例如,如果应用程序崩溃,则不会调用ApplicationIdentinterBackground:但使用model方法将允许您已经保存绘制的数据。