首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ViewController类型名称在一个类中不被识别,但它在另一个类中?

ViewController类型名称在一个类中不被识别,但它在另一个类中?
EN

Stack Overflow用户
提问于 2013-03-04 16:37:25
回答 1查看 3.8K关注 0票数 5

当我试图构建我的项目时,我在XCode中得到了一个构建语义错误。我有三个NSOperation类设置从互联网下载信息,处理它,并将它发送到父视图控制器,一个ViewController的实例。下面是工人阶级的代码:

代码语言:javascript
复制
#import <Foundation/Foundation.h>
#import "ViewController.h"

@interface ImageGetter : NSOperation

@property (nonatomic) int sid;
@property (nonatomic, retain) ViewController* pvc;

@end

下面是不起作用的代码:

代码语言:javascript
复制
#import <Foundation/Foundation.h>
#import "ViewController.h"

@interface CurrentGetter : NSOperation

@property (nonatomic) int sid;
@property (nonatomic, retain) ViewController* pvc;

@end

错误:

代码语言:javascript
复制
ERROR: Unknown type name 'ViewController'; did you mean 'UIViewController'?

我为什么要犯这个错误?我在两个文件中导入了ViewController.h,只有一个在工作。

查看控制器h:

代码语言:javascript
复制
#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>
#import <MediaPlayer/MediaPlayer.h>

#import "DataGetter.h"
#import "CurrentGetter.h"
#import "AppDelegate.h"

@interface ViewController : UIViewController <UITabBarDelegate>
{
    NSTimer* tmr;
}

@property (nonatomic) float max;
@property (nonatomic, retain) NSDictionary* plist;
@property (nonatomic, retain) NSArray* processingobj;

@property (nonatomic, retain) AVAudioPlayer* intro;
@property (nonatomic, retain) AVAudioPlayer* woop;

@property (nonatomic) float dataDone;
@property (nonatomic) BOOL introDone;
@property (nonatomic) BOOL currentDone;

@property (nonatomic) int newSid;
@property (nonatomic) int newPart;

@property (nonatomic, retain) NSMutableArray* views;

@property (nonatomic) int audioTab;
@property (nonatomic) int currentSid;
@property (nonatomic) BOOL isPlaying;

@property (nonatomic, retain) UIScrollView* partTab;
@property (nonatomic, retain) NSMutableArray* nowPlayingObj;
@property (nonatomic, retain) UINavigationBar* audioNav;

@property (nonatomic, retain) MPMoviePlayerController* player;
@property (nonatomic, retain) UILabel* elapsed;
@property (nonatomic, retain) UILabel* remaining;
@property (nonatomic, retain) UISlider* slider;
@property (nonatomic) BOOL sliderEditing;
@property (nonatomic, retain) UIButton* playBtn;

@property (nonatomic, retain) UITabBar* tabBar;

//Images

@property (nonatomic, retain) UIImage* announcement;
@property (nonatomic, retain) NSMutableArray* seriesBanners;
@property (nonatomic, retain) UIProgressView* prog;

- (void)plistDone;

@end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-04 16:44:28

尝试在CurrentGetter头文件中对类执行前向声明,如下所示:

代码语言:javascript
复制
@class ViewController;
@interface CurrentGetter : NSOperation

这告诉编译器存在一个名为“ViewController”的类。当存在循环依赖时,例如两个类具有彼此的实例时,使用类的前向声明可以解决由此产生的混乱。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15206437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档