草庐IT

initialization

全部标签

ios - 初始化变量 : 'self' captured by a closure before all members were initialized

我在初始化自定义类时遇到问题。当初始化更新属性的类时,我需要在一些数据上设置一个观察者。最初,属性可以为空,这就是我在启动时设置它们的方式。但是,Xcode仍然会抛出“在所有成员初始化之前由闭包捕获的‘self’”错误。这是代码的简化版本。classFoo{init(){self.usersRef=ref.child("users")self.usersRef.observe(DataEventType.value,with:{(snapshot)in//snapshoterrorchecking//usersis[String]self.users=users})}privateva

swift - 为什么 Swift 不强制我指定的初始化程序调用 super?

这段代码在Swift中是合法的:classSnapper:NSObject{varanim:UIDynamicAnimatorinit(referenceView:UIView){self.anim=UIDynamicAnimator(referenceView:referenceView)//super.init()}}请注意,在我的初始化程序中我没有调用super.init();我注释掉了那一行。但是Swift编译器不会提示。为什么?我认为有一条规则,您的指定构造器必须调用其父类(superclass)的指定构造器。我有一个父类(superclass),即NSObject。这是一个

ios - Swift addSubview() 在使用 init 创建的 View 上(重复 :count) doesn't work

这是一个使用init(repeating:count)创建4个subview的ViewController。在viewDidLoad中,我将它们添加为subview并设置它们的框架。当我运行应用程序时,只添加了最后一个View。classViewController:UIViewController{letsubviews=[UIView].init(repeating:UIView(),count:4)overridefuncviewDidLoad(){super.viewDidLoad()foriin0..这是相同的代码,除了我使用的不是init(repeating:count)关

swift - 为什么 Swift 不允许在 class init 中给 self 赋值,而在 protocol init 中却不允许?

我经常发现自己喜欢在struct、enum和protocol的初始化器中,我可以编写类似self=someValue。当我有一些预定义值或正在克隆现有值时,这非常有用。但是,此语法不适用于classes。我也不知道为什么。Cannotassigntovalue:'self'isimmutable如果问题是双重初始化,Swift编译器知道我是否、何时以及在何处调用指定的super或self初始化器,因此它知道我是否完成初始化此实例。如果担心的是我还没有调用指定的初始值设定项,那么它应该没问题,因为我只是让这个实例成为对另一个实例的引用(2个变量1个指针)。如果担心的是并发访问可能导致se

ios - 为什么 NSCalendar 有两个具有相似参数类型的 init 方法,它们接受日历标识符常量之一?

为什么NSCalendar有两个具有相似参数类型的init方法,它们都接受日历标识符常量之一?有两个init方法做完全相同的事情有什么意义?有谁知道为什么Apple会以这种方式将此信息添加到文档中,或者为什么甚至以这种方式创建类?这是第一个初始化方法:init?(calendarIdentifierident:String)这是第二个初始化方法:init?(identifiercalendarIdentifierConstant:String)LinktoApple'sNSCalendarClassReference 最佳答案 这似

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

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

ios - 何时使用未包装的可选值作为类型定义的一部分

比方说,我们定义一个类classC{varunwrapped:String!varnonOptional:Stringinit(nonOptional:String){self.nonOptional=nonOptional}}然后我们创建一个C的实例:varc=C(nonOptional:"hola")我看到的是,这两个属性之间的主要区别是没有必要初始化一个未包装的属性,您可以像这样进行比较:ifc.unwrapped==nil{//Dowhatever}虽然非可选属性不允许您与nil进行比较。关键是,在我看来,创建未包装的属性是不安全的,因为当您尝试访问具有nil值的未包装属性时,

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