我正在尝试做非常简单的操作。
在" TestFile.h"文件我声明了属性:
@property (nonatomic) NSDictionary *justTest;
并在实施文件" TestFile.m":
-(NSDictionary *)justTest:(NSString *) mystring {
NSLog(@"Here is my string: %@", mystring);
return nil;
}
现在我想打电话给#34; justTest"来自另一个文件。我在做什么:
#import "TestFile.h"
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
NSDictionary *testFile = [[TestFile alloc] init];
[testFile justTest:@"Hello World!"]
}
在我试图传递参数之前,这很好用。
如果我只是执行
[testFile justTest];
它有效,但是当我尝试传递参数
时[testFile justTest:@"Hello World!"];
不起作用,调试消息为:
no visible @interface for 'TestFile' declares the selector 'justTest':
我有什么问题?
答案 0 :(得分:1)
您需要通过在@end:
之前将方法名称添加到TestFile.h文件来公开此方法 -(NSDictionary *)justTest:(NSString *) mystring;
只是为了让你知道当你添加@property编译时合成它(创建)两个方法getter,与你的属性完全相同的名字和setter编译器添加'set'前缀,例如,你声明:
@property (nonatomic) NSDictionary *justTest;
编译器将创建两个方法:
-(NSDictionary *)justTest {...}
-(void)setJustTest {...}
您需要知道在代码中覆盖getter方法。
答案 1 :(得分:1)
在从外部类调用之前,在TestFile.h文件中声明您的方法。
-(NSDictionary *)justTest:(NSString *) mystring;