Xcode 11中未知类型名称'NSString'

时间:2019-10-14 15:15:29

标签: objective-c xcode

我在编辑代码时Xcode显示Unknown type name 'NSString'和其他错误。

Error messages

我的项目中有C和Obj-C代码。尽管在编辑时会显示这些错误,但代码 可以在模拟器或iPhone中正常运行 。并且“感谢”问题Xcode无法正常自动完成代码。

我尝试过的事情:

  1. 退出Xcode并重启我的Mac一段时间;
  2. 将所有.c文件更改为.m;
  3. 在“身份和类型”中将所有.c文件的类型更改为Objective-C source

但是他们都不适合我。

更新10/17:将Mac更新到10.15之后,问题消失了,一切正常。

TLPlayerSubViewController.h

#import <UIKit/UIKit.h>

@class TLMovieObject;
@class TLOverlayView;

NS_ASSUME_NONNULL_BEGIN

extern NSString *const TLSubViewDismissNotification;

@interface TLPlayerSubViewController : UIViewController

@property (strong, nonatomic) TLOverlayView *playerView;
@property (strong, nonatomic) TLMovieObject *video;

- (void)playVideo;

@end

NS_ASSUME_NONNULL_END

TLPlayerSubViewController.m

#import "TLPlayerSubViewController.h"
#import "TLOverlayView.h"
#import "TLMovieObject.h"

NSString *const TLSubViewDismissNotification = @"";

@interface TLPlayerSubViewController () <TLOverlayViewDelegate>

@end

@implementation TLPlayerSubViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    self.view.backgroundColor = [UIColor greenColor];
    [self.view addSubview:self.playerView];


}

我更清楚地解释了我的问题。在系统更新之前,我已经在.h文件或.m文件中包含/导入<UIKit/UIKit.h> <Foundation/Foundation.h>。我从不修改任何代码,而是将系统更新到最新版本,然后错误消息消失了,这很奇怪。

注意:

  1. 尽管显示错误消息,但项目可以正常运行。我认为缺少.h文件不会使代码仍然可以正常运行。
  2. 我在项目中使用FFMpeg,并且其中有一些.c文件。我尝试将THOSE .c文件更改为.m文件,但没有任何效果。我在.m文件(如图所示)而不是.c文件中编写Objective-C代码。

我想知道这是否是Xcode 11或系统中的错误...

2 个答案:

答案 0 :(得分:0)

首先,如果您的代码是Objective-C,并且其文件扩展名应为.m(大多数情况下) 对于NSString和带有NS前缀的NSString,请检查源代码文件是否具有诸如#import <Foundation/Foundation.h>#import <UIKit/UIKit.h>之类的标题,并检查项目是否具有这些链接库。

NSString和基本类定义的基础

UIKit用于UI前缀类定义。例如UIViewController(具有view属性)

答案 1 :(得分:0)

我遇到了同样的问题。

macOS Catalina开发人员Beta 11 Xcode 11

对我的同事来说很好,但对我而言却不行。尝试重新安装xcode,清除缓存等,但是没有运气。