ios - 访问 AppDelegate 属性

标签 ios objective-c

我想从 AppDelegate 向所有其他 View Controller 传递一个字符串。我定义了一个名为 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

最佳答案

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

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

但是没有必要使用这样的属性。您无需硬编码即可获取应用的显示名称。

删除您的 appName 属性并将这行代码更改为:

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

即使您重命名您的应用或对其进行本地化,这也能显示正确的名称。

关于ios - 访问 AppDelegate 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33457144/

相关文章:

iphone - ShareKit - 将链接图像发布到 facebook 墙上

iphone - 推送和弹出 View Controller

ios - NSUserDefaults 不会在导航时保存

iphone - 如何让 xcode 自动选择正确的平台 lib(.a)

ios - 如何使UIButton看起来像电子邮件链接按钮?

objective-c - 访问 NSUserDefaults 时是否需要使用委托(delegate)来维护 MVC 模式?

ios - Appledoc异常: At least one directory or file name path is required

objective-c - Objective-C 中 C 函数的重复符号错误

iphone - Objective-C中的类变量内存生命周期

ios - 从 iOS 11 上的左侧菜单导航后出现 Xcode 9 导航栏问题,而不是在 iOS 10.3 及以下版本上