2012-02-09 86 views
-1

我这里有一个方法签名:为什么我不能调用这个方法?

.h 

-(void)addToArray 

而且我想在这里使用它:

.m 

-(void)viewDidLoad{ 
NSMutableArray *array = [[NSMutableArray alloc]init]; 
[array addToArray]; 
} 

-(void)addToArray{ 
//some code here… 
} 

的问题是,当我做[阵列addToArray]它会返回一条消息,指出“实例方法'-addToArray'找不到(返回类型默认为'id')” 我该如何解决它?

+6

嗯,当然,'addToArray'不是'NSMutableArray'的方法。 – 2012-02-09 16:45:10

回答

3

,当你做[array somemethod] ..它会查找该数组数据类型类中的方法(即在NSMutableArray类。

当你在自己的class.and有一个方法,它是不是一个类别。 ..then必须调用

[self somemethod] 

这样一来就会看在这是在您所呼叫的方法的类

+0

好的。代码是好的。但它运行不正常,当我运行Xcode停止应用程序并返回给我:“线程1:程序收到信号”EXC_BAD_ACCESS“” – user1200160 2012-02-09 18:28:31

+0

使用断点调试您的代码,, ..如果你不知道它是什么是...然后检查一些youtube教程..调试将在未来帮助你很多..在你看到它崩溃的那一行之后..将该行作为你问题的更新发布,我将会提供帮助。 – Shubhank 2012-02-09 19:09:04

+0

好的。非常感谢Shubhank。现在我没时间了,但明天我会的。我会看到一些视频并阅读一些关于调试的内容,然后我会在这里发布它。谢谢。 – user1200160 2012-02-09 19:13:47

-1

在你的m文件中,尝试这样做:#import“whatever called.h”,如果你还没有。如果你提供更多的代码,我可以给予更多的帮助,但我希望这有助于。

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 
} 
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

相关问题