访问AppDelegate属性

时间:2015-10-31 22:05:03

标签: ios objective-c

我想将一个字符串传递给AppDelegate的所有其他视图控制器。我已经定义了一个名为appName的变量并为其指定了一个字符串

AppDelegate.h

#import <UIKit/UIKit.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) NSString *appName;

@end

AppDelegate.m

@implementation AppDelegate
@synthesize appName;


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    appName=@"SatKacPara";
    return YES;
}

以下实现无法访问appName属性。我无法理解。

ViewController1.m

appLabel.text=[(AppDelegate*) [UIApplication shareApplication].delegate ].appName;

enter image description here

1 个答案:

答案 0 :(得分:2)

您的代码行中有一个简单的拼写错误。它应该是:

appLabel.text = ((AppDelegate*)[UIApplication sharedApplication].delegate).appName;

但是使用这样的财产是不必要的。您可以在不对其进行硬编码的情况下获取应用的显示名称。

删除appName属性并将此行代码更改为:

appLabel.text = [NSBundle mainBundle].infoDictionary[@"CFBundleDisplayName"];

即使您重命名应用程序或将其本地化,这也有显示正确名称的优势。