在我的实现模型中,我需要一些不同的文件,以及一些类似的方法。另外,我在 NSMutableArray
中收集不同类型的对象,并尝试像这样调用我的类似方法:
[[ArrayOfViews objectAtIndex:i] myMethodWithInt:'number' andExample:'char'];
但它给了我一个警告:
Instance method '...' not found (return type defaults to 'id')
我的代码可以工作,但我是否应该修复此警告?
最佳答案
您应该介绍类型:
MONType * obj = [ArrayOfViews objectAtIndex:i];
然后使用类型变量调用该方法:
[obj myMethodWithInt:<#number#> andExample:<#char#>];
它可能会出于多种原因进行提示。引入该类型将解决这些类别的问题,或者至少给您一个更有用的警告。具体来说,编译器看不到实例方法 -myMethodWithInt:andExample:
的声明。
您可能没有导入 header ,或者声明了该方法,以便它在翻译中可见。
My code works, but should I must fix this warning or not ?
也许吧。有时它会“起作用”。这相当于 C89 缺失的函数原型(prototype),由于它们引起的所有问题而被淘汰。因此,如果参数和返回类型 id
兼容(包括 NSObject
子类),则隐式参数和返回类型可以工作。但如果它不匹配,那么您应该预料到未定义的行为。您可以避免这一切,并通过在程序中使用适当的导入和声明以及引入如上所示的类型来引入有意义的类型检查。这很有用,因为编译器可以让您在工作和代码库发展过程中避免大量愚蠢的错误。
关于objective-c - 实例方法未找到警告,但有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17556768/