我有两个.m文件并尝试在它们之间传递数据
我有这样的功能
- (unsigned int)ReadNumberOfItemsFromFile:(unsigned int)file number;
在第二个.m文件中,我无法访问此功能。
但是如果我删除了函数参数,那么这个函数在第二个.m文件中可见。
即。如果我换到
- (unsigned int)ReadNumberOfItemsFromFile;
然后这个功能可见
你能否对此有所了解?
更多详情
第一个文件.h声明
- (unsigned int)ReadNumberOfItemFromFile:(unsigned int)file number;
第一个文件Brain.m定义
- (unsigned int)ReadNumberOfItemFromFile:(unsigned int)filenumber
{
return 1;
}
第二档.m
我正在创建一个对象并调用函数
self.myTestObject = [Brain alloc];
[myTestObject brainInit];
count = myTestObject.ReadNumberOfItemFromFile:1;
// gives me an error that "property not found on the object
如上所述,如果我从函数定义和声明中删除参数,然后尝试用参数调用函数,则没有错误。
答案 0 :(得分:1)
除非您发布的内容有错字,否则
- (unsigned int)ReadNumberOfItemsFromFile:(unsigned int)file number;
无效,因为文件和数字之间有空格。
将此文件放入.h文件时,编译器应生成错误。如果您没有收到错误(并且能够运行您的程序),那么.h文件中的实际内容与您发布的内容不同。
更有可能的是.h文件中的方法声明和.m文件中的方法名称不完全相同。如果它们不存在,编译器应该向您发出有关缺少方法定义的警告。
编辑:
现在查看您发布的代码,您的行:
count = myTestObject.ReadNumberOfItemFromFile:1;
应该是:
count = [myTestObject ReadNumberOfItemFromFile:1];
答案 1 :(得分:1)
看来你的路线:
- (unsigned int)ReadNumberOfItemsFromFile:(unsigned int)file number;
不应该工作。它应该是这样的:
- (unsigned int)ReadNumberOfItemsFromFile:(unsigned int)fileNumber;
基本上,请确保两个.h文件中的方法签名完全相同。听起来有可能在一个头文件中:
- (unsigned int)ReadNumberOfItemsFromFile:(unsigned int)fileNumber;
在另一个你有:
- (unsigned int)ReadNumberOfItemsFromFile;