这是我的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
声明有疑问。
答案 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问题中。