找不到AppDelegate类

You*_*uri 4 import delegates uiapplicationdelegate ios

我在很多类中导入AppDelegate.h:

#import "AppDelegate.h"

@interface LoginViewController : UIViewController<UITextFieldDelegate>
{

}

@property (nonatomic, retain) AppDelegate *app;
Run Code Online (Sandbox Code Playgroud)

但不知何故,它停止在我的loginviewcontroller.h中工作.它说:

 unknown type name 'AppDelegate' [1]
 property with 'retain (or strong)' attribute must be of object type [3]
Run Code Online (Sandbox Code Playgroud)

我在一开始就创建了这个课程,它总是像它应该的那样工作.我没有对类进行任何更改,也没有AppDelegate对此错误进行更改.

我可以在其他类中导入它而不会出现问题.我也尝试重新创建课程,但没有帮助.

任何人都知道如何解决这个奇怪的错误?

Lor*_*o B 14

使用这行代码并不是一个好主意

@property (nonatomic, retain) AppDelegate *app;
Run Code Online (Sandbox Code Playgroud)

在每个班级,你需要它.在您需要的地方访问委托应用程序的简单方法是执行以下操作:

AppDelegate* appDel = (AppDelegate*)[[UIApplication sharedApplication] delegate];
Run Code Online (Sandbox Code Playgroud)

显然你需要这样做:

#import "AppDelegate.h"
Run Code Online (Sandbox Code Playgroud)

在你使用它的类中.

如果您想要更简洁的方法,可以在AppDelegate.h中创建类方法,如下所示:

+(AppDelegate*)sharedAppdelegate;
Run Code Online (Sandbox Code Playgroud)

在AppDelegate.m中定义如下:

+(AppDelegate*)sharedAppdelegate
{
    return (AppDelegate*)[[UIApplication sharedApplication] delegate];
}
Run Code Online (Sandbox Code Playgroud)

然后,在您需要的地方,您可以调用(在导入AppDelegate.h之后):

AppDelegate* sharedApp = [AppDelegate sharedAppdelegate];
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你.

PS为什么需要访问代理人?