我在这里有一个方法签名:
.h
-(void)addToArray
我想在这里使用它:
.m
-(void)viewDidLoad{
NSMutableArray *array = [[NSMutableArray alloc]init];
[array addToArray];
}
-(void)addToArray{
//some code here…
}
问题在于我做[array addToArray];它返回给我一条消息,说“未找到实例方法'-addToArray'(返回类型默认为'id')” 我该如何解决?
答案 0 :(得分:3)
当你执行[array somemethod]
..时,将在该数组数据类型类中找到该方法(即NSMutableArray
类。
当你在自己的班级中有一个方法时,它不是一个类别......那么你必须调用
[self somemethod]
这样它会查看你调用方法的类。
答案 1 :(得分:3)
更改为:
·H
-(void)addObjectsToArray:(NSMutableArray*)a;
的.m
- (void)viewDidLoad {
NSMutableArray * array = [[NSMutableArray alloc]init];
[self addObjectsToArray:array];
}
- (void)addObjectsToArray:(NSMutableArray*)a {
//some code here…
[a addObject:[NSString stringWithFormat:@"Example String Object"]]; // example way to add objects to the array
}
答案 2 :(得分:3)
Shubhank的答案确实是正确的,但是如果你想完成你最初描述的内容,那就是让NSMutableArray实例响应你的方法,你可以通过使用类别来实现。 https://developer.apple.com/library/ios/#documentation/cocoa/conceptual/objectivec/chapters/occategories.html
此博客详细说明了向NSArray和/或NSMutableArray添加类别。 http://it.toolbox.com/blogs/macsploitation/extending-classes-in-objectivec-with-categories-27447
答案 3 :(得分:-1)
在你的m文件中,尝试这样做:#import“无论它是什么叫。”如果你还没有。如果您提供更多代码,我可以提供更多帮助,但我希望这会有所帮助。