错误:预期;在声明列表的末尾 - 类未被识别为类型

时间:2013-01-16 18:23:09

标签: objective-c xcode properties

这是我的viewcontroller.h文件:

#import <UIKit/UIKit.h>
#import <CoreData/CoreData.h>
#import <CoreLocation/CoreLocation.h>
#import <AVFoundation/AVFoundation.h>
#import <CoreMedia/CoreMedia.h>
#import <ImageIO/ImageIO.h>
#import <CoreVideo/CoreVideo.h>


@interface ViewController : UIViewController <UINavigationControllerDelegate,  CLLocationManagerDelegate>

@property (nonatomic, strong) NSManagedObjectContext *managedObjectContext;
@property(nonatomic, weak) IBOutlet UIImageView *selectedImageView;
@property(nonatomic, retain) IBOutlet UIImageView *vImage;
@property(nonatomic, retain) AVCaptureStillImageOutput *stillImageOutput;

- (IBAction)photoFromAlbum;
- (IBAction)photoFromCamera;
- (IBAction)saveImageToAlbum;
- (IBAction)segueToChoosePhotoTypeViewController;

@end

该行:

@property(nonatomic, retain) AVCaptureStillImageOutput *stillImageOutput;

正在产生以下问题:

Expected ; at end of declaration list.

Xcode没有将AVCaptureStillImageOutput识别为类,因为它仍然是黑色并且不建议将其作为类型,并且“Fix-it”想要在AVCaptureStillImageOutput之后插入;

但是,如果我尝试使用声明AVCaptureStillImageOutput作为我的viewController.m文件的viewDidLoad中的类型,它会识别它并允许它作为类型。此外,其余的AVFoundation类在那里的代码中被识别。

框架在那里,我只是对这个@property声明有疑问。

2 个答案:

答案 0 :(得分:5)

在你的行

@property(nonatomic, retain) AVCaptureStillImageOutput *stillImageOutput;

AVCaptureStillImageOutput*stillImageOutput之间有一些隐藏字符。如果我将此行粘贴到vi编辑器中,它看起来像这样:

@property(nonatomic, retain) AVCaptureStillImageOutput<feff><feff><feff><feff><feff> *stillImageOutput;

(U + FEFF是一个Unicode Byteorder标记,它看起来像Xcode中的普通空间,即使“Show Invisibles”被激活了。)

删除并重新插入空格可以解决问题。

答案 1 :(得分:2)

转到Editor菜单,选择Show Invisibles。请注意,AVCaptureStillImageOutput*之间有大量不可见,不可打印的字符。删除这两者之间的所有内容,最后再放一个空格。这些不可见的字符,即使不可打印,也被视为您的类名的一部分。完成后,您可以再次选择Hide Invisibles。复制/粘贴代码时要小心,你甚至可以将这些“坏字符”复制/粘贴到上面的SO问题中。