7

这是我的 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 之后插入右边。

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

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

4

2 回答 2

7

在你的行

@property(nonatomic, retain) AVCaptureStillImageOutput *stillImageOutput;

你在和之间有一些不可见的字符。如果我将此行粘贴到 vi 编辑器中,它看起来像这样:AVCaptureStillImageOutput*stillImageOutput

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

(U+FEFF 是一个 Unicode 字节序标记,它看起来像 Xcode 中的普通空间,即使“显示不可见”被激活)。

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

于 2013-01-16T18:57:11.523 回答
3

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

于 2013-01-16T19:05:42.957 回答