Ios 当我们设置self.navigationItem.hidesBackButton=YES时,实际调用了什么方法;

Ios 当我们设置self.navigationItem.hidesBackButton=YES时,实际调用了什么方法;,ios,uinavigationbar,uinavigationitem,runloop,Ios,Uinavigationbar,Uinavigationitem,Runloop,我很好奇,当我们设置self.navigationItem.hidesBackButton=YES/NO时,实际调用了什么方法。我很好奇,因为属性不是方法,当我们将背景上实际运行的内容赋给任何值时,它可以立即隐藏或显示后退按钮。我一直在想,有一个运行循环,它会不断检查这样的东西。来自苹果的文档 视图绘制周期 UIView类使用按需绘图模型来显示内容。当视图第一次出现在屏幕上时,系统要求它绘制其内容。系统捕获此内容的快照,并将该快照用作视图的视觉表示。如果从未更改视图的内容,则可能再也不会调用视图

我很好奇,当我们设置self.navigationItem.hidesBackButton=YES/NO时,实际调用了什么方法。我很好奇,因为属性不是方法,当我们将背景上实际运行的内容赋给任何值时,它可以立即隐藏或显示后退按钮。我一直在想,有一个运行循环,它会不断检查这样的东西。

来自苹果的文档

视图绘制周期 UIView类使用按需绘图模型来显示内容。当视图第一次出现在屏幕上时,系统要求它绘制其内容。系统捕获此内容的快照,并将该快照用作视图的视觉表示。如果从未更改视图的内容,则可能再也不会调用视图的图形代码。快照映像将重新用于涉及视图的大多数操作。如果确实更改了内容,则会通知系统视图已更改。视图然后重复绘制视图和捕获新结果快照的过程

当视图的内容发生更改时,您不会直接重新绘制这些更改。相反,可以使用setNeedsDisplay或setNeedsDisplayInRect:方法使视图无效。这些方法告诉系统视图的内容已更改,需要在下一次机会重新绘制。在启动任何绘图操作之前,系统将等待当前运行循环结束。此延迟使您有机会同时使多个视图无效、从层次结构中添加或删除视图、隐藏视图、调整视图大小和重新定位视图。然后,您所做的所有更改都会同时反映出来

因此,由于UIKit基于MVC,当您设置此属性时,当前视图的模型将发生更改

然后,在下一次运行循环中,视图将重新绘制,然后您会看到它是否隐藏

此调用背后的方法由iOS自动调用以重画,可能是某些私有重画方法


希望这将帮助您回答标题中的问题,扩展为不使用点语法,该行是:
[[self-navigationItem]setHidesBackButton:value]
。但我相当肯定,这种方法实际上不会进行任何重画;这是在主运行循环的某个地方完成的。所有属性都是方法。你为什么不这么说?