用于读取属性的obj-c点表示法:为什么我不能像这样将其组合?
|
我有这行代码:
[[[EntitlementsManager instance] entitlements] objectAtIndex:indexPath.row];
为什么它不能按以下方式工作:
[EntitlementsManager.instance.entitlements objectAtIndex:indexPath.row];
似乎应该对我有用?关于它为什么不编译,我有些困惑。
仅供参考,EntitlementsManager,\'instance \'是返回其单例的\'+ \'方法,而\'entitlements \'是NSArray属性。
-edit:对于那些为什么说“ instance \”是静态的“'+ \”方法而不起作用的人,为什么下面的方法行之有效?我真的很感兴趣:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return EntitlementsManager.instance.entitlements.count;
}
-edit2:确实有效,奇怪的是:
... = [[EntitlementsManager instance].entitlements objectAtIndex:indexPath.row];
没有找到相关结果
已邀请:
2 个回复
埃输林桨铃
的左侧出现Type时,可能会感到困惑。例如,如果语法
存在,则将在解析
之前对其进行解析,并且由于
不是methodAndArguments的预期构造,因此编译器将失败。由于ѭ8并不是点语法的一种预期用法,因此对于编译器不支持它,甚至将来使其使用语法错误都是有效的。 请始终对类方法使用方括号表示法,因为您应该:
或将该表达式移到方括号之外:
或强迫ѭ11不匹配:
献导外拘