- (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的蓝色箭头.
如果此名称与您的项目名称相同,那么我的答案并不能解决您的问题.如果不同,则应使用红色箭头指示的符号浏览新位置,以使用该文件的新副本.
浏览并使用新文件后,您的问题将得到解决,您将能够访问这些方法.如果仍然不能,请复制这些文件,从项目中删除然后再次添加它们,您将不会遇到此问题.
希望这可以帮助!
总结以上是内存溢出为你收集整理的iphone – ARC语义问题:没有可见的@interface for Class声明了选择器全部内容,希望文章能够帮你解决iphone – ARC语义问题:没有可见的@interface for Class声明了选择器所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)