我正在尝试从一个类中调用一组方法,这些类位于另一个类中。
这些方法都存在于我的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)
为什么第一个流不起作用,但第二个流怎么办?
答案 0 :(得分:1)
错误非常描述性。您正在调用一个不存在的方法。
您正在调用setProgressValue:
作为类方法,它可能是一个实例方法。请注意' +'在错误描述中。您需要在ViewController
的具体实例上调用它。
答案 1 :(得分:0)
如果我在没有看到你的代码的情况下做出有根据的猜测,我会在你的标题中说明你有一个声明的方法看起来像这样:
+ (void)setProgressValue:(float)progress
在您的实现中,您有一个如下所示的方法:
- (void)setProgressValue:(float)progress {
// Blah...
}
请注意,方法声明是不同的。一个被声明为static(注意+
)而另一个被声明为实例方法(请注意实现中的-
)。你的标题声明它确实存在,实际上静态方法在你的实现中并不存在。