Ios Appdelegate错误

Ios Appdelegate错误,ios,objective-c,appdelegate,Ios,Objective C,Appdelegate,我得到运行时错误作为类应用程序委托的重复接口定义。那么这段代码有什么问题 #import <UIKit/UIKit.h> @class ViewController; @interface AppDelegate : UIResponder <UIApplicationDelegate> @property (strong, nonatomic) UIWindow *window; @property (strong, nonatomic) ViewControl

我得到运行时错误作为类应用程序委托的重复接口定义。那么这段代码有什么问题

#import <UIKit/UIKit.h>

@class ViewController;

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;

@property (strong, nonatomic) ViewController *viewController;

@end
#导入
@类视图控制器;
@接口AppDelegate:UIResponder
@属性(强,非原子)UIWindow*window;
@属性(强,非原子)ViewController*ViewController;
@结束

在头文件状态的开头:

#if !defined APPDELEGATE_H
#define APPDELEGATE_H
在结束状态时:

#endif
此错误的根本原因很可能是您在某些类的头文件和.m文件中包含了AppDelegate.h。编译.m文件时,会包括相应的.h文件(可能还包括其他一些.h文件)。这些.h文件中的任何一个都包括AppDelegate.h。此外,还可以将其包含在.m文件中。从编译器的角度来看,这将导致接口的定义重复。 上述解决方案并非真正的解决方案。严格地说,这是一个解决办法。但它是相当标准的,苹果在他们所有的模板中都使用它。这只是一个变通办法,因为它不是解决问题,而是解决问题

适当的解决办法是: 在.h文件中,如果可以避免,则不包括其他.h文件。在适当的地方使用
@class
语句。 当.h文件已包含在任何其他包含的.h文件中时,切勿在.m文件中重复包含任何.h文件。 你可能会认为“这是一个痛苦的a…”。你是对的:)因此我建议使用常见的
#if!定义XY_H/#定义XY_H/#endif
模式,尽管我认为这只是一种解决方法

#if !defined APPDELEGATE_H
#define APPDELEGATE_H
#import <UIKit/UIKit.h>

@class ViewController;

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;

@property (strong, nonatomic) ViewController *viewController;

@end
#endif
#如果!已定义的应用程序
#定义应用程序
#进口
@类视图控制器;
@接口AppDelegate:UIResponder
@属性(强,非原子)UIWindow*window;
@属性(强,非原子)ViewController*ViewController;
@结束
#恩迪夫

我刚刚遇到了这个问题

我所做的是从另一个项目中拖放包含
#import AppDelegate
的文件,该项目也包含了名为AppDelegate.h/.m的类。当我把文件放到我的项目中时,我引用了该项目中的文件,而不是复制它们

通过这样做,这些文件与要导入的AppDelegate冲突,我得到了一个编译错误,即“类的重复接口定义`AppDelegate”


我通过删除引用并按预期复制文件来解决问题。这可能不是您的问题,因为您有一个运行时错误,但只是一个提示。

您可以共享viewController.m的代码吗?上面的代码没有问题。这:可能会帮助你解决你的问题。你能通过代码(一些例子)告诉我吗。因为我是ios的新手。这不是ios的问题,而是C/Objective-C相关的。但是,我将其添加到了您的代码中。