在AppDelegate中存储,访问和编辑字符串

时间:2012-08-11 14:30:43

标签: objective-c ios nsstring appdelegate

您好我已经看到了这个问题的答案:

How to pass a value from one view to another view

我遇到了一些麻烦。我已经在AppDelegate的头文件中存储了一个字符串。

#import <UIKit/UIKit.h>

@interface AppDelegate : UIResponder <UIApplicationDelegate>
{
    NSString *commString;
}

@property (strong, nonatomic) UIWindow *window;

@end

我现在需要访问它并在一个视图中更改它。然后在另一个视图中显示它。上一页的答案简要解释了这一点,但我对答案的第二部分遇到了麻烦。它不会让我这样做:

AppDelegate.commString = myString; //mystring being an NSString

有什么想法吗?

由于

1 个答案:

答案 0 :(得分:4)

问题是双重的。首先,您尝试访问类上的ivar,其次是类而不是实例。 [[UIApplication sharedApplication] delegate];将委托类的有效实例作为单例返回,以便在多个位置轻松访问,但是您需要将ivar声明为@property,否则冒险使用(极不稳定) )struct access operator。

#import <UIKit/UIKit.h>

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) NSString *commString; //@synthesize this
@property (strong, nonatomic) UIWindow *window;

@end


AppDelegate *del = [[UIApplication sharedApplication] delegate];
del.commString = myString;