我有一个NSMutableArray,它存储了其他数组的列表。当我运行代码时。
NSLog(@"%@",[[appDelegate teamRoster]objectAtIndex:[indexPath.row]class])
它返回并告诉我,我正在看一个数组,
然而,当我尝试执行以下操作时
[selectedRowerView tempArray] = [[appDelegate teamRoster]objectAtIndex:[indexPath.row]];
程序出错了。任何人都有任何想法为什么会发生这种情况?
答案 0 :(得分:3)
您必须了解[selectedRowerView tempArray]
实际上是正在发送的命令/消息。在C ++中,您正在调用selectedRowerView->tempArray() = ...
。这没有逻辑意义,因为你不能对一个函数进行赋值。
您要做的是设置tempArray。如果你有适当的setter / getters设置,你可以运行:selectedRowerView.tempArray = ...;
请确保tempArray的@property
为@synthesize
'。
答案 1 :(得分:1)
这个怎么样?
selectedRowerView.tempArray = [[appDelegate teamRoster]objectAtIndex:[indexPath.row]];
...假设tempArray
是一个合成属性
@property (nonatomic, readwrite, retain) NSArray *tempArray;
@synthesize tempArray;
澄清:
selectedRowerView.tempArray = …;
内部处理到
[selectedRowerView setTempArray:…];
这是 setter方法。
虽然
selectedRowerView.tempArray;
内部处理到
[selectedRowerView tempArray];
这是 getter方法。
微妙但重要的区别。
foo.bar
的含义取决于它所使用的上下文(封闭表达式)。