在我的一个控制器中,我想访问我的app delegate的字段。因此,要检索应用程序委托,我使用以下代码:
[[UIApplication sharedApplication] delegate];
但是当我尝试将它强制转换为我的委托名称时,我得到的错误是名称未声明。
我是否必须在要访问字段的类中导入应用程序委托的头文件?
答案 0 :(得分:10)
你必须为app delegate提供头文件(MyAppDelegate.h)。你可以访问以下appdelegate成员。请参阅link
MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
答案 1 :(得分:6)
我是否必须在要访问字段的类中导入应用程序委托的头文件?
是。您还可以在预编译头(.pch)文件中抛出#import
语句。这将为您提供项目中所有文件中特定类的引用。
或者,你总是可以玩危险的游戏,忽略编译器“可能没有响应”警告,只是发送没有强制转换的消息到你的特定类。 (将其视为id
。)
答案 2 :(得分:3)
首先在viewController类中导入appdelegate类,如
在ViewController.m文件中
# import "SampleAppDelegate.h" *write yours*
SampleAppDelegate *appDelegate=(SampleAppDelegate *)[[UIApplication sharedApplication]delegate];
之后,您可以访问appDelegate的字段 例如
[appDelegate.nameArray count];
nameArray是我在appDelegate中声明的数组。
答案 3 :(得分:0)
请迅速使用UIApplication.shared.delegate as! AppDelegate