草庐IT

FTL_INIT

全部标签

Swift:为什么 init?(length length: Int) NSMutableData 的初始化程序会失败?

内存分配可能会失败,但我认为Swift不会处理这种情况。github上的代码调用一个不可失败的初始化器publicconvenienceinit?(length:Int){letmemory=malloc(length)self.init(bytes:memory,length:length,copy:false){buffer,amountinfree(buffer)}}编辑:代码来自Swift3中的原生SwiftFoundation框架。 最佳答案 来自swift-users列表:“Swift关于内存分配失败的政策是,如果无法处

Swift 子类的 init 必须在调用 super 之前设置所有属性,但是属性需要 super 的 init 先完成

我正在尝试编写两个Swift类,一个是另一个的子类,需要采用父类(superclass)的一个属性并使用它来配置自身。classBaseClass{letsomeValue:Doubleletsize:CGSizeinit(size:CGSize){self.size=sizeself.someValue=size.width/2.0//Doesn'treallymatterhowthisiscalculated}}classSubclass:BaseClass{letsomeNewValue:Doubleoverrideinit(size:CGSize){super.init(siz

ios - Swift UIViewController Custom init() - 错误无法分配给自己

在Objective-C中,我曾经覆盖UIViewController的init方法。我无法在Swift中实现相同的目标:Objective-C代码:-(instancetype)init{self=[superinit];if(self){self=[[UIStoryboardstoryboardWithName:@"Main"bundle:[NSBundlemainBundle]]instantiateViewControllerWithIdentifier:@"ViewController"];}returnself;}如果我尝试在Swift中这样做,我会收到“无法分配给自己”的

ios - 什么时候在 UIView 或 UIViewController 上调用 "required init?(coder aDecoder: NSCoder)"?

当我使用存储属性创建UIView或UIViewController的子类时,除非我包含requiredinit的实现,否则Xcode不会编译我的项目?(编码器aDecoder:NSCoder).目前,我有以下实现来关闭编译器:requiredinit?(coderaDecoder:NSCoder){fatalError()}我明白为什么我需要包含这个初始化程序;我的子类需要符合NSCoding协议(protocol),因为它的父类(superclass)符合它,并且这个初始化程序是NSCoding协议(protocol)的一部分,所以它需要与我的类一起工作,即初始化我类的所有存储属性(

swift - 为什么我现在必须在 Swift 中覆盖我的 init?

importFoundationclassStudent:NSObject{varname:Stringvaryear:Intvarmajor:Stringvargpa:Stringinit(name:String,year:Int,major:String,gpa:String){self.name=nameself.year=yearself.major=majorself.gpa=gpa}convenienceinit(){//callslongerinitmethodwrittenabove}}--错误显示在convenienceinit行Overridingdeclarati

swift - 初始化器要求 'init(json:)' 只能由非最终类 `required` 定义中的 'UIColor' 初始化器满足

我正在尝试编写一个扩展来满足扩展中的协议(protocol):extensionUIColor:JSONRepresentable{convenienceinit?(json:Any){guardletcolourArray=jsonas?[CGFloat]else{print("jsonwasnotanarrayofCGFloats")returnnil}self.init(red:colourArray[0],green:colourArray[1],blue:colourArray[2],alpha:colourArray[3])}}我收到这个错误:Initializerrequ

swift - 整数类型 : Cannot invoke 'init' with an argument of type 'T'

我有一个返回范围内整数的函数:funcrandomNumber(min:T,max:T)->T{letn=max-min+1letu=UInt32(n)//Error:Cannotinvoke'init'withanargumentoftype'T'letr=arc4random_uniform(u)returnr+min}我不明白为什么这不起作用,因为UInt32最上面的协议(protocol)是UnsignedIntegerType,它符合IntegerType。我必须将n变成UInt32因为arc4random_uniform()需要一个UInt32作为参数为什么这行不通?

ios - 错误 : Use of 'self' in property access 'texture' before super. init 初始化自身

我是swift的新手,我正在尝试通过以下方式学习swift创建一个简单的纸牌游戏。我从视频中输入了完全相同的代码。但是xcode显示错误“在super.init初始化self之前在属性访问‘texture’中使用‘self’”感谢您的帮助!importSpriteKitclassCard:SKSpriteNode{varrank:Intvarsuit:StringvarimageNameUp:StringvartextureUp:SKTexturevartextureDown:SKTextureinit(rank:Int,suit:String,faceUp:Bool){self.ra

ios - 如何在 Swift 中调配 init

我正在关注Swift&theObjective-CRuntime,它适用于普通方法。我喜欢调配init方法,据我了解,init就像一个类方法。所以我尝试将init作为实例和类方法进行调配。但是好像不行我可以使用ObjectiveC让它工作,只是想知道如何让它在Swift中工作摘self的gistdispatch_once(&Static.token){letoriginalSelector=Selector("init:source:destination:")letswizzledSelector=Selector("ftg_init:source:destination:")let

swift - Swift 中 init 属性的语法糖?

classPerson{varname:Stringvarage:Intfuncinit(age:Int,name:String,/**...**/){self.age=ageself.name=name//...muchtyping,muchboring.}}我可能有点懒惰,但明确输入每个属性感觉很像工作中的人类编译器。在Swift中为实例分配构造函数参数是否有任何语法糖? 最佳答案 查看DefaultInitializersSwift语言书籍的一部分。如果您要使Person成为结构而不是类,它会自动获得一个成员初始化:struc