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