找不到AppDelegate类

时间:2012-02-06 15:55:50

标签: ios delegates import uiapplicationdelegate

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

#import "AppDelegate.h"

@interface LoginViewController : UIViewController<UITextFieldDelegate>
{

}

@property (nonatomic, retain) AppDelegate *app;

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

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

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

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

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

2 个答案:

答案 0 :(得分:14)

使用这行代码

并不是一个好主意
@property (nonatomic, retain) AppDelegate *app;

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

AppDelegate* appDel = (AppDelegate*)[[UIApplication sharedApplication] delegate];

显然你需要这样做:

#import "AppDelegate.h"

在你使用它的类中。

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

+(AppDelegate*)sharedAppdelegate;
AppDelegate.m中的

定义如下:

+(AppDelegate*)sharedAppdelegate
{
    return (AppDelegate*)[[UIApplication sharedApplication] delegate];
}

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

AppDelegate* sharedApp = [AppDelegate sharedAppdelegate];

希望它有所帮助。

P.S。为什么需要访问该委托?

答案 1 :(得分:1)

在.h文件中声明转发引用

@class AppDelegate

@interface LoginViewController : UIViewController<UITextFieldDelegate>
{

}

//将其保留为赋值而不是保留以保持retainCount为变量

@property (nonatomic, assign) AppDelegate *app;
<。>在.m文件中,通过导入AppDelegate.h获取指向Appdelegate的指针然后分配变量

#import "AppDelegate.h"

- (void)viewDidLoad
{
   self.app = (AppDelegate*)[[UIApplication sharedApplication] delegate];
   //use the variable.
}