Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.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
Objective c 如何与整个项目共享一个对象?_Objective C_Cocoa Touch_Oop - Fatal编程技术网

Objective c 如何与整个项目共享一个对象?

Objective c 如何与整个项目共享一个对象?,objective-c,cocoa-touch,oop,Objective C,Cocoa Touch,Oop,例如,如果我在一个类中创建一个UILabel,我如何在任何我想使用的地方使用它 我已经知道如何在两个班级之间分享。但我需要在所有类中调用对象的值。可能吗?单身是你想要的吗?基本上,singleton只是一个只返回相同实例的类,不管发生什么。这里有一个网站,告诉你如何做 最好的方法是将其写入临时文件文件夹,如下所示: NSString *pathtmp = [NSTemporaryDirectory() stringByAppendingPathComponent:@"tmpString.txt"

例如,如果我在一个类中创建一个UILabel,我如何在任何我想使用的地方使用它


我已经知道如何在两个班级之间分享。但我需要在所有类中调用对象的值。可能吗?

单身是你想要的吗?基本上,singleton只是一个只返回相同实例的类,不管发生什么。这里有一个网站,告诉你如何做

最好的方法是将其写入临时文件文件夹,如下所示:

NSString *pathtmp = [NSTemporaryDirectory() stringByAppendingPathComponent:@"tmpString.txt"];
NSString *stringToWrite = [NSString stringWithFormat:@"%@",Label.text];
[stringToWrite writeToFile:pathtmp atomically:YES encoding:NSStringEncodingConversionExternalRepresentation error:nil];
要阅读它:

NSString *pathtmp = [NSTemporaryDirectory() stringByAppendingPathComponent:@"tmpString.txt"];
NSString *stringToWrite = [NSString stringWithContentsOfFile:pathtmp encoding:NSStringEncodingConversionExternalRepresentation error:nil];
您询问“我需要调用所有类中对象的值。是否可能?”并提到UILabel

您应该真正避免视图层组件戳到其他视图层组件。它产生了耦合,这使得它(1)很难更改-简单的更改会以不可预知的方式破坏代码的大部分区域(请参见上文spaggeti代码的参考)和(2)很难测试,因为系统中没有层

您应该了解MVC的原则。在MVC中,您拥有视图、控制器和模型。你应该尽可能向下推。多个视图和控制器可以在控制数据和业务逻辑的同一个模型上操作

模型是数据和您对数据执行的操作。使所有不同的视图都能处理这些数据,而不是互相刺探

我建议创建一组模型类,并允许对该模型进行公共访问。一个常见的模式是该类是单例的

因此,多个视图和控制器就可以了

MyModel*model=[MyModel sharedInstance]; 然后多个控制器可以对其进行操作

这里有一篇关于这个主题的好文章:

来自苹果的辛格尔顿:


希望能有帮助。

对我来说,这真是个坏主意。请参阅“不清楚”:您是想简单地共享一个类定义,还是创建一个对象实例并使其可以从应用程序中的任何位置访问。对于前者,您使用.h文件。对于后者,可以使用UIApplicationLegate的子类。或者你可以使用一个单独的,但另一个完全不同的蠕虫。我想我认为他指的是在对象之间共享数据,因为有人问他如何在所有类中调用一个值。但是,当我重新阅读时,它并不清楚,因为UILabel ref询问它在何处使用它。你能澄清一下吗?首先对不起,我的英语不好。是的,我的意思是将一个类的对象属性(UILabel)的文本指定给另一个类的UILabel。