iOS   发布时间:2022-05-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了iphone – ARC语义问题:没有可见的@interface for Class声明了选择器大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述@H_607_4@ 非常基本的东西,但我无法解决问题所在.在我的项目中,我有一个名为“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:”

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

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

解决方法

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

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

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

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

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

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

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

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

希望这可以帮助!

大佬总结

以上是大佬教程为你收集整理的iphone – ARC语义问题:没有可见的@interface for Class声明了选择器全部内容,希望文章能够帮你解决iphone – ARC语义问题:没有可见的@interface for Class声明了选择器所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。