【发布时间】:2013-05-08 02:51:25
【问题描述】:
相当基本的东西,但我无法解决问题所在。在我的项目中,我有一个名为“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];
但是在另一个类中,如果我尝试以类似的方式访问这些方法,我会收到错误“'TheFeedStore' 的不可见@interface 声明选择器'hasItemBeenRead:”
1) 我已经在我的类中导入了 TheFeedStore.h 文件 访问 TheFeedStore 类的这些方法。
2) 我检查了 10 次,没有错字。
3) 我正在访问的方法也在头文件中声明 TheFeedStore.h
更新:检查一下,我在 TheFeedStore.h 中声明了另一个测试方法,结果相同,一个类可以访问新创建的方法,而其余三个类不能。
更新:我已尝试在 TheFeedStore.h 中创建更多方法来解决此问题。其他类也无法访问新方法。但是,如果这些新方法的返回类型是 (RSSChannel*),它是我项目中的另一个模型类,那么它们就可以访问了。如果它们的返回类型不是 (void) 和 (BOOL) 之类的类,则它们不可访问。这是我的 TheFeedStore.h https://gist.github.com/jessicamoore112/5558473
【问题讨论】:
-
你有没有
#import进入你遇到这个错误的班级? -
当然我已经导入了课程。它无法识别这些方法,当我输入 [[TheFeedStore sharedStore] 时,即使是“sharedStore”类方法也会出现在自动完成列表中
-
TheFeedStore.h 文件中有什么?您是否在 .h 中声明了这些实例方法?
-
@ThilinaHewagama 是的,这些方法也在头文件中声明
-
他是在确认你没有这样做,而不是建议你应该这样做。
标签: iphone ios objective-c xcode class-method