来自不同班级的呼叫方法有时会起作用,有时也不起作用

时间:2015-06-25 14:17:07

标签: ios xcode class methods call

我正在尝试从一个类中调用一组方法,这些类位于另一个类中。

这些方法都存在于我的ViewController.m类中,我试图从我的另一个名为MyClass.m的类中调用它们。

有时它有效,有时它不会。

我得到的错误是

unrecognized selector sent to class 0x1071c0050

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[ViewController setProgressValue:]: unrecognized selector sent to class 0x1071c0050'

当错误表明[ViewController setProgressValue:]出现问题时,ViewController.m内部也会出现错误,而ViewController.methodA -> MyClass.methodB -> ViewController.methodB内也存在错误。

流程如下: ViewController.methodA -> MyClass.methodB -> ViewController.methodC

这不起作用,但以下工作 # We now have variables to use in the replace statement # Use the Workspaces Glob to loop through the workspaces for wor in Workspaces: # Handles opening and closing of input and output files with open(wor, 'r'),open("new_" + wor,'w') as infile,outfile: # Loop through the input file for line in infile.readlines(): # For each line check whether the current list value (FileName) is in the line if '"' + OldPath + '"' in line: print line # Update the line, replacing the old path with the new path. line.replace(OldPath, NewPath); outfile.write(line)

为什么第一个流不起作用,但第二个流怎么办?

2 个答案:

答案 0 :(得分:1)

错误非常描述性。您正在调用一个不存在的方法。

您正在调用setProgressValue:作为类方法,它可能是一个实例方法。请注意' +'在错误描述中。您需要在ViewController的具体实例上调用它。

答案 1 :(得分:0)

如果我在没有看到你的代码的情况下做出有根据的猜测,我会在你的标题中说明你有一个声明的方法看起来像这样:

+ (void)setProgressValue:(float)progress

在您的实现中,您有一个如下所示的方法:

- (void)setProgressValue:(float)progress { // Blah... }

请注意,方法声明是不同的。一个被声明为static(注意+)而另一个被声明为实例方法(请注意实现中的-)。你的标题声明它确实存在,实际上静态方法在你的实现中并不存在。