草庐IT

lazy-initialization

全部标签

ios - `UnsafeMutablePointer.initialize()`到底是做什么的?

以下是我的猜测。请大家指出我理解错误的部分。如果我有一个类,其中一个实例占用128位,叫做Class128Bits.我的程序在64位计算机上运行。首先,我调用letpointer=UnsafeMutablePointer.allocate(capacity:2)内存布局应该是这样的:000-063064bitschaos064-127064bitschaos128-255128bitschaos256-383128bitschaos如果我调用pointer.pointee=aClass128Bits,它崩溃了,因为前两个网格中的指针还没有被初始化。访问它们指向的内容会导致不可预测的结果

ios - 如何防止在 Swift 中延迟加载静态变量

我编写了一个Swift实用程序类,在其中定义了几个静态方法和一个私有(private)静态常量。但是,我希望在第一次引用该类之后立即加载此常量,而不是延迟加载。我唯一能想到的就是在每个静态函数中引用静态常量,如下所示:privatestaticletmyObserver:Observer={letobserver=Observer(actionToPerform:foo1)SomeOtherClass.register(observer)returnobserver}()staticfuncfoo1(){_=myObserver...}staticfuncfoo2(){_=myObse

swift - 延迟实例化的正确使用

我对惰性实例化的理解是应该在以下情况下使用惰性属性可能需要也可能不需要初始化和/或属性的初始化可能很昂贵和/或属性的初始化取决于其他可能事先不知道的参数。然而,我越来越多地遇到这样的代码[伪代码]:classSomeClass{lazyvaritemSize:CGSize={returnCGSize(width:80,height:80)}()....init(){[useitemSizeforsomeinitwork]}}对我来说,这没有意义,因为itemSize总是需要初始化,并不昂贵并且不依赖于任何未知属性。我错过了什么吗? 最佳答案

swift - 在 swift3 中使用方法而不是 block 来初始化惰性变量

在swift3文档中。推荐通过以下两种方式使用lazy:1。直接初始化`lazyvarsomeViews:UILabel=UILabel()`2。用block初始化lazyvaroverlayView:UILabel={[unownedself]inletoverlayView=UILabel()overlayView.backgroundColor=self.backgroundColor.withAlphaComponent(0.90)overlayView.font=UIFont.boldSystemFont(ofSize:YFCalendarOverlaySize)overla

ios - Swift 3.0 中的 UICollectionViewController 错误 : must be initialized with a non-nil layout parameter

我是iOS开发新手。我一直在学习Swift,今天,我尝试使用UICollectionViewController。我的代码如下:classViewController:UICollectionViewController,UICollectionViewDelegateFlowLayout{varcolView:UICollectionView!overridefuncviewDidLoad(){super.viewDidLoad()//Doanyadditionalsetupafterloadingtheview,typicallyfromanib.letlayout:UIColle

ios - swift 错误 : Struct 'XX' must be completely initialized before a member is stored to

我正在尝试在Swift中定义AudioStreamBasicDescription。在Objective-C中,我使用了如下代码。AudioStreamBasicDescriptionASBD;ASBD.mSampleRate=8000;ASBD.mFormatID=kAudioFormatLinearPCM;ASBD.mFormatFlags=kAudioFormatFlagsCanonical|kAudioFormatFlagIsSignedInteger|kAudioFormatFlagIsPacked;ASBD.mFramesPerPacket=1;ASBD.mChannels

opensslErrorStack: [ ‘error:03000086:digital envelope routines::initialization error‘ ]

如果遇到了OpenSSL错误opensslErrorStack:[‘error:03000086:digitalenveloperoutines::initializationerror’],并且使用的是Node.js,可以尝试以下解决方案:“dev”:“setNODE_OPTIONS=–openssl-legacy-provider&&vue-cli-serviceserve”找到项目的package.json文件。在"scripts"部分“dev”:“vue-cli-serviceserve”添加“setNODE_OPTIONS=–openssl-legacy-provider”设置为“d

ios - 它显示 "required initializer init must be provided in subclass of UIControl"当我覆盖 init(frame : CGRect)

此代码有效:importUIKitclasswheel:UIControl{}但是这段代码没有:classwheel:UIControl{overrideinit(frame:CGRect){super.init(frame:frame)}当我覆盖init(frame:CGRect)而不是init(coderaDecoder:NSCoder).为什么我必须执行init(coderaDecoder:NSCoder)?如果我没有实现init(frame:CGRect)为什么我不需要实现它?我找到了一个类似的StackOverflow帖子,但没有解释:Swift:Error:'require

ios - Swift 类中的自定义初始化给出 'property not initialized at implicitly generated super.init call' 错误?

我正在尝试创建一个简单的类用作我的MKMapView的注释。我正在获取要解析到这些注释对象中的数据,并认为用字典初始化注释是个好主意,并在这个模型类中而不是在UIViewController。不过,我似乎无法摆脱编译器错误,每当我尝试修复一个错误时,就会出现另一个错误。当前正在获取未在隐式生成的super.init调用中初始化的“属性self.coordinate”。调用super.init()只会产生不同的错误“Propertyself.coordinatenotinitializedatsuper.initcall”,无论我在哪里在方法中调用super.init()。任何帮助将非常

ios - Swift 惰性和可选属性

Swift中的Lazy和Optional属性有什么区别?例如,如果有人正在构建一个从侧面进入的导航栏,我认为这应该都在一个UIViewController中。用户可能永远不会打开菜单,但有时他们会打开。varmenu:NavigationBar?lazyvarmenu:NavigationBar=NavigationBar.initialize()我认为这两个可选代码都是很好的代码,因为除非需要,否则它们不会创建View。我理解Optional意味着可能有一个值可能是nil。我也理解Lazy意味着在我需要它之前不要担心它。具体问题我的问题是,他们的性能模式(安全性和速度)是否表明可选方