Objective c 需要打字
我有一个带有初始值设定项的类,它使用NSDictionary:Objective c 需要打字,objective-c,ios,Objective C,Ios,我有一个带有初始值设定项的类,它使用NSDictionary: -(id)initWithVector:(NSDictionary *) vectorDictionary; 当我试图传递NSDictionary时,它会给我一个错误: 不兼容的点类型将“VectorClass*\u strong”发送到参数 键入“NSDictionary*” 代码: 如果我输入NSDictionary*vector,没有警告 vector应该是一个字典,为什么我会得到警告?您对两个不同的变量使用相同的名称。最内
-(id)initWithVector:(NSDictionary *) vectorDictionary;
当我试图传递NSDictionary时,它会给我一个错误:
不兼容的点类型将“VectorClass*\u strong”发送到参数
键入“NSDictionary*”
代码:
如果我输入NSDictionary*vector,没有警告
vector应该是一个字典,为什么我会得到警告?您对两个不同的变量使用相同的名称。最内部的变量是在同一行中定义的VectorClass类型,因此编译器尝试将其传递给init方法,而不是更改其名称:
VectorClass *vectorC = [[VectorClass alloc] initWithVector:vector];
[vectorC retrieveVectorAttributeTable];
[vectorC retrieveVectorMetadataTable];
有趣的是,你认为对两个完全不同的变量使用相同的名称是个好主意。你不应该为此感到愚蠢。大多数程序员在这个阶段或其他阶段都会犯这个错误。正如@Till所评论的,您应该避免使用相同的变量名,这会让其他程序员和您自己感到困惑,并且可能导致错误行为,而不是编译时错误。
VectorClass *vectorC = [[VectorClass alloc] initWithVector:vector];
[vectorC retrieveVectorAttributeTable];
[vectorC retrieveVectorMetadataTable];