当您在 Xcode 中选择拆分视图应用程序时,我正在使用标准示例拆分视图,添加一些字段后,我需要添加一些字段以在详细视图中显示它们。
在原始示例中发生了一些有趣的事情,主视图在详细视图中设置了“detailItem”属性,详细视图显示它。
- (void)setDetailItem:(id) newDetailItem
{
if (_detailItem != newDetailItem) {
_detailItem = newDetailItem;
// Update the view.
[self configureView];
}
我明白那是什么,所以当我在玩它的时候。我认为如果我使用 self.detailItem 而不是 _detailItem 会是一样的,因为它是类的属性。
然而,当我使用
self.detailItem != newDetailItem
我实际上陷入了一个不断调用此方法的循环中,而我无法在模拟器中执行任何其他操作。
我的问题是,下划线变量(ivar?)和属性之间的实际区别是什么?我在这里阅读了一些帖子,这似乎只是一些客观的 C 约定,但实际上有所不同。