我已经为一个类写了一个方法formatSearchString
,并试图在它被实现之前在一行中调用它(应该不重要?)。我得到这个错误:Objective-C转发方法声明
Error: Semantic Issue
Use of undeclared identifier 'formatSearchString'
我使用的XCode 4.6.2
接口文件FHViewController.h
:您正在使用
#import "FHViewController.h"
@interface FHViewController()
- (NSString *)formatSearchString:(NSString *)userEntry;
@end
@implementation FHViewController
@synthesize searchTerm;
-(void)viewDidLoad
{
[super viewDidLoad];
NSString *formatted = [formatSearchString userEntry:searchTerm];
}
- (NSString *)formatSearchString:(NSString *)userEntry
{
NSLog(@"User Entry: %@", userEntry);
return @"Dummy string for now";
}
@end
为什么将方法声明添加到.h文件和.m文件中的类扩展?也不需要。如果该方法被其他类使用,则只需要.h文件中的方法声明。现代Objective-C不再需要.m文件中的前向声明。 – rmaddy 2013-04-27 20:36:13
您应该也可能将'#import'更改为'#import ',因为这是声明了基于UI *的类的地方。你的项目现在编译好了,因为你的' -Prefix.pch'预编译的头文件中有'#import ',但理想情况下,类不应该依赖在那。 –
NSGod
2013-04-27 21:39:02
您的所有建议都已实施并完美运作。谢谢。我是objective-c的新手。我遵循的模式来自(显然已经过时)Apple Objective-c API文档以及来自本网站的帖子询问同一个问题。我真正的问题是想像一个15年的Java程序员 - 没有意识到我需要明确地说“自我”在我自己的课堂上调用一种方法。 – gbshuler 2013-04-28 03:43:33