我想将一个字符串传递给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;
答案 0 :(得分:2)
您的代码行中有一个简单的拼写错误。它应该是:
appLabel.text = ((AppDelegate*)[UIApplication sharedApplication].delegate).appName;
但是使用这样的财产是不必要的。您可以在不对其进行硬编码的情况下获取应用的显示名称。
删除appName
属性并将此行代码更改为:
appLabel.text = [NSBundle mainBundle].infoDictionary[@"CFBundleDisplayName"];
即使您重命名应用程序或将其本地化,这也有显示正确名称的优势。