在 Microsoft 的 WinObjC UIApplication.mm 文件(位于https://github.com/Microsoft/WinObjC/blob/master/Frameworks/UIKit/UIApplication.mm)中,该init
方法适用于UIApplication
和WOCDisplayMode
。
既不调用类的init
方法[super init]
,也不调用该方法系列中的任何方法,最终导致调用[super init]
. 除了对象的初始化之外,我以前从未见过这种情况NSProxy
。
我已经复制了在WOCDisplayMode
下面撰写本文时的实现以供参考。
-(instancetype) init
{
_fixedWidth = 320.0f;
_fixedHeight = 480.0f;
_fixedAspectRatio = 0.0f;
_magnification = 1.0f;
_autoMagnification = TRUE;
_sizeUIWindowToFit = TRUE;
_operationMode = WOCOperationModePhone;
return self;
}
在我看来,这可能会产生许多问题;例如,如果UIApplication
, like的超类之一UIResponder
在某个时候覆盖了init
自身,并设置了未来方法调用所依赖的内部状态。
为什么实施者可能选择不调用[super init]
?这是一个合理的决定吗?它曾经是正确的吗?