大佬教程收集整理的这篇文章主要介绍了iphone – ARC语义问题:没有可见的@interface for Class声明了选择器,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
- (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
在这种情况下,通常没有人指出这个问题,但无论如何我都会这样做,因为我多次遇到过这样的问题.您可能已创建了许多项目副本,以处理每个功能并保留工作项目.
执行此操作时,有时Xcode仍在使用少量文件的旧副本.这意味着当您未尝试访问您尝试访问的方法时,它仍在使用TheFeedStore.h的旧副本.
如何解决这个问题非常简单.转到您尝试访问方法的文件以及声明这些方法的文件.
在右侧的“实用程序”部分中,检查“身份和类型”区域下的位置和完整路径.
首先检查项目的名称,如果它与您正在处理的项目名称不同,则表示Xcode仍在从项目的上一版本中提取文件的旧副本.在我的案例中,请参阅项目名称为13SampleMorerequests的蓝色箭头.
如果此名称与您的项目名称相同,那么我的答案并不能解决您的问题.如果不同,则应使用红色箭头指示的符号浏览新位置,以使用该文件的新副本.
浏览并使用新文件后,您的问题将得到解决,您将能够访问这些方法.如果仍然不能,请复制这些文件,从项目中删除然后再次添加它们,您将不会遇到此问题.
希望这可以帮助!
以上是大佬教程为你收集整理的iphone – ARC语义问题:没有可见的@interface for Class声明了选择器全部内容,希望文章能够帮你解决iphone – ARC语义问题:没有可见的@interface for Class声明了选择器所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。