Objective c textView未从另一个视图控制器获取设置(使用Singleton类)

Objective c textView未从另一个视图控制器获取设置(使用Singleton类),objective-c,ipad,ios5,singleton,xcode4.3,Objective C,Ipad,Ios5,Singleton,Xcode4.3,我有一个textViewController类。我想从另一个视图控制器设置(基本上更新)相应的textView的内容,我正在将它推到当前的textViewController上。我认为我可以这样做的方式是拥有一个共享的singleton类,并拥有一个string属性来包含文本。我一直在使用singleton存储一些其他内容,到目前为止,它工作得很好 但是singleton类中的text变量不包含我从第二个视图控制器传递给它的内容,因此textViewController在弹出第二个视图控制器后

我有一个textViewController类。我想从另一个视图控制器设置(基本上更新)相应的textView的内容,我正在将它推到当前的textViewController上。我认为我可以这样做的方式是拥有一个共享的singleton类,并拥有一个string属性来包含文本。我一直在使用singleton存储一些其他内容,到目前为止,它工作得很好


但是singleton类中的text变量不包含我从第二个视图控制器传递给它的内容,因此textViewController在弹出第二个视图控制器后,即使在重新出现后也会显示旧文本。我正在更新textView的ViewWillExample方法,该方法正在被调用,但在NSLogging上显示旧的文本内容。
我错过了什么?请提出一个解决方案,长期以来一直如此。

文本变量的NSString属性是如何定义的?这是一个“弱”的声明吗 首先,在app delegate
.h
文件中声明
NSString
。它应该是这样的:

//YourAppDelegate.h

#import <UIKit/UIKit.h>

@interface YourAppDelegate : NSObject < UIApplicationDelegate >
{
    NSString *sharedString; //WE ADDED THIS
}

@property (nonatomic, retain) NSString *sharedString; //AND THIS
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet SomeViewController *viewController;

@end
赋值 当您想从另一个类为
sharedString
赋值时,必须首先检索应用程序委托的活动实例:

YourAppDelegate *appDelegate = (YourAppDelegate*)[[UIApplication sharedApplication] delegate];
YourAppDelegate *appDelegate = (YourAppDelegate*)[[UIApplication sharedApplication] delegate];
这里的
appDelegate
对象是您正在运行的appDelegate实例。要访问委托中的
sharedString
NSString
对象并分配值,我们需要执行以下操作:

appDelegate.sharedString = @"some string we want to assign";
在应用程序运行期间,“我们要分配的某个字符串”“现在存储在应用程序委托的
sharedString

检索值 您将希望在某个时刻检索该值。要做到这一点,我们必须再次获取应用程序委托的运行实例:

YourAppDelegate *appDelegate = (YourAppDelegate*)[[UIApplication sharedApplication] delegate];
YourAppDelegate *appDelegate = (YourAppDelegate*)[[UIApplication sharedApplication] delegate];
一旦有了正在运行的实例,我们就可以访问存储在其中的
sharedString
对象:

NSString *retrievedString = appDelegate.sharedString;
从这一点开始,
retrievedString
现在保存值“一些我们想要分配的字符串”

注: 无论我在哪里提到你的appdelegate,我都是指你的appdelegate——你在项目中拥有的appdelegate。它将与您的项目名称相关(查找文件)


请张贴相关的源代码。您可能遇到了内存管理问题。另外-根据您描述的问题,听起来您应该使用委托模式,而不是单例。我将单例属性设置为:[MySingleton sharedSingleton].text=newwiki;第二个视图控制器的内部视图,其中newwiki是我的字符串内容。并且在视图中将出现我拥有的textViewController:self.textView.text=[MySingleton sharedSingleton].text;当调用ViewDidDemouse时,您确定newwiki是有效的引用吗?是的。我不知道为什么singleton属性不保存被弹出的视图分配给它的值。也许是这个原因造成了问题。我不知道它将如何工作。我试图检索字符串,但它们都显示为空。我已经重写了答案,并试图非常彻底。如果你现在不明白,我也无能为力!祝你好运+1个完整的答案-现在不是每个人都在使用ARC吗?非常感谢。我真的很感谢你的帮助。但我发现ViewWillExeal甚至在ViewDidEvale结束之前就开始执行了。我在ViewDidEnglish中读取文件,最后我更新了textView,我认为这需要一些时间。因此,即使在新内容可用之前,ViewWillAppeal也已完成执行。我得想个办法。如果你有任何建议,请分享。再次感谢。viewDidLoad只调用一次。然而,我需要在每次视图出现时更新textView。我已将其定义为(非原子,读写)。应该是别的吗?