加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

iphone – ARC语义问题:没有可见的@interface for Class声明了

发布时间:2020-12-15 01:47:38 所属栏目:百科 来源:网络整理
导读:非常基本的东西,但我无法解决问题所在.在我的项目中,我有一个名为“TheFeedStore”的类,有以下两种方法: - (BOOL)hasItemBeenRead:(RSSItem *)item{ ............}- (void)markItemAsRead:(RSSItem *)item{ .........} 我使用以下类方法,以便其他类可以使用
非常基本的东西,但我无法解决问题所在.在我的项目中,我有一个名为“TheFeedStore”的类,有以下两种方法:

- (BOOL)hasItemBeenRead:(RSSItem *)item
{
   ............
}

- (void)markItemAsRead:(RSSItem *)item
{
  .........
}

我使用以下类方法,以便其他类可以使用它访问这些方法:

+ (TheFeedStore *) sharedStore
{
    static TheFeedStore *feedStore = nil;

    if (!feedStore) {
        feedStore = [[TheFeedStore alloc] init];
    }
    return feedStore;
}

在我的另一个课程中,我可以通过写作轻松访问上述方法

if ([[TheFeedStore sharedStore] hasItemBeenRead:item])

要么

[[TheFeedStore sharedStore] markItemAsRead:entry];

但是在另一个类中,如果我尝试以类似的方式访问这些方法,我得到错误“没有可见的@interface为’TheFeedStore’声明了选择器’hasItemBeenRead:”

1) I have imported TheFeedStore.h file in the classes from i am
accessing these methods of TheFeedStore class.

2) I have checked like 10 times and there is no typo.

3) The methods i am accessing are also declared in the header file of
TheFeedStore.h

更新:只是为了检查,我已经在TheFeedStore.h中声明了另一个测试方法,同样的结果,一个类可以访问新创建的方法,而其他三个类则不能.

更新:我已经尝试在TheFeedStore.h中创建更多方法,仅用于解决此问题.其他类也无法访问新方法.但是如果这些新方法的返回类型是(RSSChannel *),它是我项目中的另一个模型类,那么它们就变得可访问了.如果它们的返回类型不是某些类,如(void)和(BOOL)那么它们是不可访问的.这是我的TheFeedStore.h https://gist.github.com/jessicamoore112/5558473

解决方法

您已经说过在头文件中使用@class而不是#import,您尝试访问的方法在头文件中声明,并且没有任何类型的拼写错误.

在这种情况下,通常没有人指出这个问题,但无论如何我都会这样做,因为我多次遇到过这样的问题.您可能已创建了许多项目副本,以处理每个功能并保留工作项目.

执行此操作时,有时Xcode仍在使用少量文件的旧副本.这意味着当您未尝试访问您尝试访问的方法时,它仍在使用TheFeedStore.h的旧副本.

如何解决这个问题非常简单.转到您尝试访问方法的文件以及声明这些方法的文件.

在右侧的“实用程序”部分中,检查“身份和类型”区域下的位置和完整路径.

首先检查项目的名称,如果它与您正在处理的项目名称不同,则表示Xcode仍在从项目的上一版本中提取文件的旧副本.在我的案例中,请参阅项目名称为13SampleMoreRequests的蓝色箭头.

如果此名称与您的项目名称相同,那么我的答案并不能解决您的问题.如果不同,则应使用红色箭头指示的符号浏览新位置,以使用该文件的新副本.

浏览并使用新文件后,您的问题将得到解决,您将能够访问这些方法.如果仍然不能,请复制这些文件,从项目中删除然后再次添加它们,您将不会遇到此问题.

希望这可以帮助!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读