paint-brush
Swift init(), Hal mar iyo dhammaanby@kfamyn
Taariikh cusub

Swift init(), Hal mar iyo dhammaan

by Kiryl Famin19m2025/03/21
Read on Terminal Reader

Aad u dheer; In la akhriyo

Maqaalkani waxa uu daboolayaa wax kasta oo lagama maarmaan u ah bilawga Swift: xubin ahaan, loo qoondeeyey, ku habboonaanta, ku habboonaanta ka saarista; kiisaska isticmaalka loo baahan yahay; UIView() bilaa xuduud ah; Caawinta isku-darka; fashilmi kara init, enum init iyo in ka badan.
featured image - Swift init(), Hal mar iyo dhammaan
Kiryl Famin HackerNoon profile picture
0-item
1-item

Hordhac

Hello! Magacaygu waa Kiryl Famin, waxaana ahay horumariye iOS ah.


Maanta, waxaan rabaa in aan si fiican u baaro mawduuc fudud sida kuwa bilowga ah ee Swift. Inkasta oo ay si fudud u muuqato, mararka qaarkood faham la'aanta mawduucan waxay keentaa khaladaad niyad jab leh oo qofku rabo inuu si dhakhso ah u hagaajiyo isaga oo aan faahfaahinta faahfaahin.


Maqaalkan, waxaan ku dabooli doonaa wax kasta oo la xiriira bilowga, oo ay ku jiraan:


  • Sida loo sii hayo qaab-dhismeedka bilowga xubin ahaan iyadoo la qeexayo mid caado ah

  • Waa maxay sababta aysan had iyo jeer lagama maarmaan u ahayn in fasalada lagu qoro bilowga

  • Waa maxay sababta wacitaanka super.init aan had iyo jeer looga baahnayn bilowga la qoondeeyey

  • Waa maxay sababta dhammaan qaybaha fasal-hoosaadka ay tahay in la buuxiyo ka hor inta aan la wicin super.init

  • Sida loo galo dhammaan bilawga waalidka oo leh xad-dhaaf yar oo fasal-hoosaad ah

  • Marka si sax ah loo required bilowga loo baahan yahay

  • Waa maxay sababta UIView.init() had iyo jeer loogu yeeraa iyada oo aan la xaddidin, laakiin init(frame:) iyo init(coder:) waa la tirtiray


...iyo qaar kaloo badan. Laakiin aan u qaadno tallaabo tallaabo.

Tusmada Tusmada

Aasaaska

Qaab dhismeedka

  • Bilowga xubin ahaan
  • Ikhtiyaarka
  • var vs let
  • Haysashada bilowga xubin ahaan

Fasallada

  • Bilowga loo qoondeeyay
  • Bilawga ku habboonaanta
  • Haysashada bilowga ku habboonaanta superclass
  • Yaraynta tirada xad dhaafka ah
  • Caawinta iskudubaridka
  • bilowga required : generics, protocols, Self() , final
  • UIView() oo aan xuduud lahayn

Xusid mudan

  • Fashilmay init
  • Enums

Soo koobid

Xiriirinta laxiriirta

Aasaaska

Tusaha Apple The Swift Programming Language (6) (kaaso, si la yaab leh, si la yaab leh loogu faahfaahiyay bilowga) wuxuu leeyahay:


Bilawga waa habka diyaarinta tusaale ahaan fasalka, qaab-dhismeedka, ama tirinta isticmaalka. Habkani waxa uu ku lug leeyahay dejinta qiimaha bilowga ah ee hanti kasta oo kaydsan tusaale ahaanas iyo samaynta habayn kale ama bilaabista kale ee loo baahan yahay ka hor inta aan tusaalaha cusub diyaar u ahayn isticmaalka.


Waxaad fulisaa habkan bilawga ah adoo qeexaya bilawga , kuwaas oo la mid ah hababka gaarka ah ee loogu yeero si loo abuuro tusaale cusub oo nooc gaar ah. Si ka duwan kuwa bilowga ah Objective-C, bilowga hore ee Swift ma soo celiyaan qiime. Doorkooda aasaasiga ah waa inay hubiyaan in xaaladaha cusub ee nooc si sax ah loo bilaabay ka hor inta aan la isticmaalin markii ugu horeysay.


Hagaag, waxaan filayaa inaanan waxba halkan ku darin.

Qaab dhismeedka

Aan ku bilowno ka doodista qaab-dhismeedka bilowga. Tani waa arrin sahlan maadaama aysan jirin dhaxal, laakiin weli waxaa jira xeerar ay tahay inaad wax ka ogaato.

Bilowga xubin ahaan

Aynu qorno qaab-dhismeed fudud:

 struct BankAccount { let amount: Double let isBlocked: Bool } let bankAccount = BankAccount(amount: 735, isBlocked: Bool)


U fiirso inaan awoodnay inaan bilowno qaab dhismeedka anagoon si cad u sheegin wax bilow ah. Tani waxay dhacdaa sababtoo ah dhismooyinku waxay helayaan bilawga xubin ahaan xubin ka ah oo uu soo saaray iskudubariduhu. Tani waxay u shaqaysaa oo kaliya dhismayaasha .


Markaad doorato Refactor → Samee bilawga xubin ahaan , waxaad arki kartaa sida ay u egtahay:


Ku abuurista bilawga xubin ahaanta ah ee Xcode


 init(amount: Double, isBlocked: Bool) { self.amount = amount self.isBlocked = isBlocked }


Saxiixa marka la eego, way fududahay in la arko in ku guuldaraysiga bixinta qiyamka dhammaan cabbirada ay keeni doonto khalad isku-ururin:

 let bankAccount = BankAccount(amount: 735) // ❌ Missing argument for parameter 'isBlocked' in call


Si kastaba ha noqotee, haddii aad rabto inaad yareyso tirada doodaha loo baahan yahay, waxaad qeexi kartaa bilowga caadada:

 init(amount: Double, isBlocked: Bool = false) { self.amount = amount isBlocked = isBlocked } let bankAccount = BankAccount(amount: 735) // ✅


Ogsoonow in haddii isBlocked aan la dajin, tani waxay keenaysaa qalad la isku duba ridey sababtoo ah dhammaan guryaha dhismuhu waa in lagu buuxiyaa bilowga .

Ikhtiyaarka, var vs let

Kiiska kaliya ee aan garoonku u baahnayn in si cad loo dajiyo waa marka ay tahay doorsoome ikhtiyaari ah ( ? ) ( var ). Xaaladahan oo kale, goobta ayaa noqon doonta nil :

 struct BankAccount { let amount: Double var isBlocked: Bool? init(amount: Double) { self.amount = amount } } let bankAccount = BankAccount(amount: 735) // ✅


Si kastaba ha ahaatee, haddii aan isku dayno inaan isticmaalno bilawga xubin ahaan kiiskan, waxaan heli doonaa qalad isku dubarid:

 let bankAccount = BankAccount( amount: 735, isBlocked: false ) // ❌ Extra argument 'isBlocked' in call

Haysashada bilowga xubin ahaan

Tani waxay dhacdaa sababtoo ah ku dhawaaqida bilawga caadadu waxay meesha ka saaraysaa bilawga xubin ahaan. Wali waa suurtogal in si cad loo qeexo, laakiin si toos ah uma heli doono.


Si kastaba ha ahaatee, waxaa jira khiyaamo yar oo lagu hayo bilawga xubin ahaan: ku dhawaaq bilawga caadada ee extension .

 struct BankAccount { let amount: Double var isBlocked: Bool? } extension BankAccount { init(amount: Double) { self.amount = amount } } let barclaysBankAccount = BankAccount(amount: 735) // ✅ let revolutBankAccount = BankAccount(amount: 812, isBlocked: false) // ✅ print(barclaysBankAccount.isBlocked) // nil print(barclaysBankAccount.isBlocked) // false


Soo koobida dhismayaasha

  • Dhammaan goobaha waa in lagu buuxiyaa bilowga
  • Ikhtiyaarka var beeruhu waa nil
  • Dhismayaashu waxay helayaan bilawga xubin ka ah oo bilaash ah
  • Bilawga xubin ahaanta ka tirsani wuu baaba'ayaa haddii lagu dhawaaqo bilowga hore
  • Si aad u sii haysato bilawga qaab-dhismeedka xubin ahaan, qeex mid gaar ah oo ku jira extension

Fasallada

Bilowga loo qoondeeyay

Bilawga aasaasiga ah ee fasalka waa bilawga la qoondeeyey . Waxay u adeegtaa laba ujeedo:

  1. Waxay hubisaa in dhammaan beeraha ay dadku ku badan yihiin
  2. Haddii fasalka la dhaxlo, waxay wacdaa bilowga heerka sare
 class Animal { var name: String init(name: String) { self.name = name } } class Dog: Animal { var breed: String var name: String init(breed: String, name: String) { self.breed = breed super.init(name: name) } }


Dhammaan goobaha waa in la buuxiyaa ka hor inta aan la wicin super.init . Tani waa sababta oo ah bilawga superclass wuxuu u yeeri karaa hababka ay dhaafeen fasalka hoose, kaas oo geli kara guryaha dabaqa hoose ee aan la dajin.

 class Animal { var age: Int init(age: Int) { self.age = age getInfo() } func getInfo() { print("Age: ", age) } } class Dog: Animal { var breed: String init(breed: String, age: Int) { self.breed = breed // imagine we haven't done this super.init(age: age) } override func getInfo() { print("Age: ", age, ", breed: ", breed) } }


Sidaas darteed, haddii aynaan dejin self.breed = breed , waxaan la kulmi lahayn qalad runtime ah sababtoo ah bilawga Animal wuxuu ugu yeeri lahaa habka getInfo() ee fasalka Dog . Habkani wuxuu isku dayaa inuu galo hantida breed , kaas oo aan wali la dajin.


Si ka duwan qaab-dhismeedka, fasaladu ma helaan bilawga xubin ahaan oo daahsoon. Haddii ay jiraan guryo aan la bilaabin, khalad ururin ayaa dhacaya:

 class Animal { // ❌ Class 'Animal' has no initializers var age: Int }
 class Animal { // ✅ var age: Int = 0 }
 class Animal { // ✅ var age: Int? }
 class Animal { } // ✅

Bilawga ku habboonaanta

Fasallada sidoo kale waxay yeelan karaan bilow fududeeye . Si ka duwan kuwa bilowga ah ee loo qoondeeyay, kama abuuraan shay meel xoq ah, laakiin waxay fududeeyaan habka bilowga iyagoo dib u isticmaalaya macquulka bilowgayaasha kale.

 class Rectangle { var width: Double var height: Double init(width: Double, height: Double) { self.width = width self.height = height } convenience init(side: Double) { self.init(width: side, height: side) // uses a designated initializer of self } }


Bilaabayaasha fududeyaashu waxay wici karaan kuwa la qoondeeyay ama kuwa kale ee fududaynta. Ugu dambayntii, bilawga la qoondeeyey ayaa had iyo jeer la wici doonaa.

Ku habboonaanta, la qoondeeyey iyo bilowga heer sare


Bilaabayaasha fududaynta had iyo jeer waxay u socdaan toosan (self.init), iyo kuwa bilawga loo qoondeeyay waxay u socdaan toosan (super.init).

Haysashada bilawga ku habboonaanta Superclass

Isla marka fasal-hoosaadku uu ku dhawaaqo hanti cusub, waxay luminaysaa gelitaanka dhammaan kuwa bilowga ah ee ku habboon heerka sare.

 class Animal { var age: Int var name: String init(age: Int, name: String) { self.age = age self.name = name } convenience init(age: Int) { self.init(age: age, name: "Default") } convenience init(name: String) { self.init(age: 0, name: name) } } class Dog: Animal { var breed: String init(age: Int, name: String, breed: String) { self.breed = breed super.init(age: age, name: name) } } let dog = Dog(age: 3) // ❌ Missing arguments for parameters 'breed', 'name' in call 


Kala sareynta bilawga hadda, hal shay oo kaliya ayaa si cad loogu dhawaaqay


Tan waxa lagu hagaajin karaa iyada oo meesha laga saarayo dhammaan bilawga heer-sare ee loo qoondeeyay .

 class Dog: Animal { // ... override init(age: Int, name: String) { self.breed = "Mixed" super.init(age: age, name: name) } } let dog = Dog(age: 3) // ✅ 


Bilaabayaasha ku habboonaanta hadda waa la soo celiyay, laakiin laba bilow ayaa si cad loogu dhawaaqay


Way fududahay in la arko in, habkan, si aad u isticmaasho bilawga ku habboon fasalka hoose ee soo socda, waxaad u baahan tahay inaad ka gudubto laba bilawga.

 class GuideDog: Dog { var isTrained: Bool override init(age: Int, name: String) { self.isTrained = false super.init(age: age, name: name) } override init(age: Int, name: String, breed: String) { self.isTrained = false super.init(age: age, name: name, breed: breed) } init(age: Int, name: String, breed: String, isTrained: Bool) { self.isTrained = isTrained super.init(age: age, name: name, breed: breed) } } let dog = GuideDog(age: 3) // ✅ 


Bilaabayaasha ku habboonaanta ayaa dib loo helay, laakiin GuideDog waxay si cad u qeexday saddex bilow


Yaraynta tirada xad dhaafka ah

Si kastaba ha ahaatee, tan waxaa looga fogaan karaa iyadoo la isticmaalo bilowga hore ka-hortagga habboon .

 class Dog: Animal { var breed: String convenience override init(age: Int, name: String) { self.init(age: age, name: name, breed: "Mixed") // self, not super } init(age: Int, name: String, breed: String) { self.breed = breed super.init(age: age, name: name) } } class GuideDog: Dog { var isTrained: Bool // override init(age: Int, name: String) { // self.isTrained = false // // super.init(age: age, name: name, breed: "Mixed") // } convenience override init(age: Int, name: String, breed: String) { self.init(age: age, name: name, breed: breed, isTrained: false) // self, not super } init(age: Int, name: String, breed: String, isTrained: Bool) { self.isTrained = isTrained super.init(age: age, name: name, breed: breed) } } let dog = GuideDog(age: 3) // ✅ 


Laba nooc oo ku habboonaanta Xayawaanka ayaa dib loo helay, Rabitaanka eeyga (da'da:, magaca:) dib ayaa loo helay oo kaliya laba bilawga GuideDog ayaa si cad loo cayimay.


Hadda waxaan haysanaa 2 bilow oo si cad u qeexan fasal hoose kasta.

Fiiro u yeelo sida ku habboonaanta kuwa bilowga ah ugu yeeraan self is-aqooneed halkii ay ka ahaan lahaayeen super.init .

Khiyaamadan waxa si fiican loogu sharaxay cutubka 5 ee Swift in Depth oo uu qoray Tjeerd ee 't Veen, buug aan aad ugu talinayo.

Soo koobid dhexdhexaad ah

  • Bilawga la qoondeeyey wuxuu hubinayaa in dhammaan guryaha la wada buuxo oo wac super.init() .
  • Bilawga fududaysta wuxuu fududeeyaa bilawga isagoo wacaya bilawga loo qoondeeyay.
  • Bilowga ku habboonaanta waxay noqotaa mid aan la heli karin fasal-hoosaadyada haddii ay ku dhawaaqaan guryo cusub.
  • Si loo soo celiyo fududeeyaha superclass , dhammaan curiyeyaasha loo qoondeeyay waa in la buriyo.
  • Si loo yareeyo tirada ka-hortagga, ku habboonaanta bilawga beddelka ayaa la isticmaali karaa.

Caawinta iskudubaridka

Waxaan mar hore ka wada hadalnay in haddii fasal-hoosaadku aanu soo bandhigin cabbirro cusub, uu si toos ah u dhaxlo dhammaan bilawga heerka sare.

 class Base { let value: Int init() { value = 0 } init(value: Int) { self.value = value } } class Subclass: Base { } let subclass = Subclass() // ✅ let subclass = Subclass(value: 3) // ✅


Si kastaba ha ahaatee, waxaa jira qodob kale oo muhiim ah: haddii superclass uu leeyahay hal bilow oo loo qoondeeyay oo uu yahay mid aan lahayn ( init() dood la'aan), ka dibna bilawga si cad loogu dhawaaqay fasalka hoose uma baahna inuu waco super.init() . Xaaladdan oo kale, compiler-ka Swift wuxuu si toos ah u gelinayaa wicitaanka super.init() ee jira iyaddoo aan dood lahayn.

 class Base { init() { } } class Subclass: Base { let secondValue: Int init(secondValue: Int) { self.secondValue = secondValue // ✅ without explicit super.init() } }


Koodhku wuxuu ururiyaa sababtoo ah super.init() ayaa si maldahan loogu yeedhay. Tani waxay muhiim u tahay qaar ka mid ah tusaalooyinka soo socda.

Loo baahan yahay

Bilawga required ayaa loo isticmaalaa dhammaan xaaladaha ay tahay in fasal-hoosaadku leeyahay isla bilowga fasalka aasaasiga ah. Waa inay sidoo kale wacdo super.init() . Hoos waxaa ku yaal tusaalayaal marka bilowga required uu lagama maarmaan yahay.

Generics

U yeedhida init nooca guud waxa ay suurta gal tahay oo kaliya in lagu dhawaaqo sidii required init .

 class Base { } class Subclass: Base { } struct Factory<T: Base> { func initInstance() -> T { // ❌ Constructing an object of class T() // type 'T' with a metatype value } // must use a 'required' initializer }


Xeerkani ma ururiyo sababtoo ah Factory waxba kama oga qaybaha hoose ee Base . In kasta oo kiiskan gaarka ah, Subclass uu leeyahay init() iyada oo aan xuduud lahayn, qiyaas haddii ay soo bandhigtay goob cusub:

 class Subclass: Base { let value: Int init(value: Int) { self.value = value } }


Halkan , hadda ma laha init madhan , marka waa in lagu dhawaaqaa sida required .

 class Base { required init() { } } class Subclass: Base { } struct Factory<T: Base> { static func initInstance() -> T { // ✅ T() } } let subclass = Factory<Subclass>.initInstance()


U fiirso inkasta oo aynaan si cad ugu dhawaaqin required init Subclass , iskudubariduhu waa inoo soo saaray. Tan waxa lagaga hadlay Caawimaadda Compiler . required init si toos ah ayaa loo dhaxlay waxaana loo yaqaan super.init() .

 class Subclass: Base { required init() { super.init() } }

Habmaamuuska

Dhammaan curiyeyaasha lagu sheegay borotokoolka waa in required :

 protocol Initable { init() } class InitableObject: Initable { init() { // ❌ Initializer requirement 'init()' can only // be satisfied by a 'required' initializer } // in non-final class 'InitableObject' }


Mar labaad, tani waa lagama maarmaan si uu isu-dubariduhu u hubiyo in fasalka-hoosaadku hirgeliyo bilawga borotokoolka. Sidaan horayba u ognahay, tani had iyo jeer ma dhacdo-haddii aan init required , fasalka-hoosaadku waajib kuma aha inuu ka gudbo oo waxa laga yaabaa inuu qeexo bilawgiisa.

 class IntValue: InitableObject { let value: Int init(value: Int) { self.value = value } } let InitableType: Initable.Type = IntValue.self let initable: Initable = InitableType.init()


Dabcan, koodka soo socda ma ururin doono sababtoo ah Base.init() looma required .

 class InitableObject: Initable { required init() { } // ✅ } class IntValue: InitableObject { let value: Int required init() { self.value = 0 } init(value: Int) { self.value = value } }

Nafta()

Xaalad la mid ah ayaa dhacda marka la wacayo bilawga Self() ee hababka taagan.

 class Base { let value: Int init(value: Int) { self.value = value } static func instantiate() -> Self { Self(value: 3) // ❌ Constructing an object of class type 'Self' } // with a metatype value must use a 'required' initializer }


Sida had iyo jeer, arrintu waxay ku jirtaa dhaxalka:

 class Subclass: BaseClass { let anotherValue: Int init(anotherValue: Int) { self.anotherValue = anotherValue } } let subclass = Subclass.instantiate() // ❌
 class BaseClass { let value: Int required init(value: Int) { // ✅ self.value = value } static func instantiate() -> Self { Self(value: 3) } }

Ka takhalusidda required : final

Maadaama ujeedada required ay tahay in la dhaqan geliyo hirgelinta bilowga fasal-hoosaadyada, dabiici ahaan, mamnuucidda dhaxalka iyadoo la adeegsanayo ereyga muhiimka ah final waxay meesha ka saaraysaa baahida loo qabo in lagu calaamadiyo bilowga sida required .

 protocol Initable { init() } final class InitableObject: Initable { } // ✅
 protocol ValueInitable { init(value: Int) } final class ValueInitableObject: ValueInitable { init(value: Int) { } // ✅ }

Soo koobid dhexdhexaad ah

  • Haddii fasal-hoosaadku aanu soo bandhigin cabbirro cusub, wuxuu si toos ah u dhaxlayaa dhammaan bilawgayaasha heerkiisa sare.
  • Haddii heerka sare uu leeyahay init() oo keliya iyada oo aan la xaddidin, waxaa si toos ah loogu yeeraa bilowga fasalka hoose.
  • Bilawga required ayaa loo baahan yahay si loo dammaanad qaado joogitaankeeda fasal-hoosaadyada si loogu isticmaalo guud ahaan, borotokoolka, iyo Self() .

UIView()

Xusid kooban oo ku saabsan bilowga UIView() bilaa cabbir, kaas oo aan laga heli karin dukumeentiyada laakiin si qarsoodi ah meel walba looga isticmaalo.


Sababtu waa UIView waxay ka dhaxashay NSObject , kaas oo leh init() oo aan xuduud lahayn. Sidaa darteed , bilawga si cad looguma dhawaaqin interface UIView , weli waa la heli karaa:

 @available(iOS 2.0, *) @MainActor open class UIView : UIResponder, NSCoding, UIAppearance, UIAppearanceContainer, UIDynamicItem, UITraitEnvironment, UICoordinateSpace, UIFocusItem, UIFocusItemContainer, CALayerDelegate { open class var layerClass: AnyClass { get } public init(frame: CGRect) public init?(coder: NSCoder) open var isUserInteractionEnabled: Bool // no init()


Si kastaba ha ahaatee, hoosta daboolka, bilawgani wuxuu wacaa init(frame:) marka lagu bilaabo koodka ama init(coder:) marka lagu bilaabo Interface Builder. Tani waxay dhacdaa sababtoo ah UIView waxay bixisaa hirgelinteeda NSObject.init() , taas oo lagu xaqiijin karo xaqiiqda ah in method_getImplementation uu soo celiyo ciwaano kala duwan NSObject.init() iyo UIView.init() .

Xusid mudan

Fashilmay init

Meesha aan shaqayn karin waa mid soo celisa ikhtiyaari ikhtiyaari ah

 final class Failable { let positiveValue: Int init?(value: Int) { guard value > 0 else { return nil } positiveValue = value } }

Enum

Enums leh qiima cayriin waxay helayaan lacag la'aan init?(rawValue:)

 enum Direction: String { case north case west case south case east } let north = Direction(rawValue: "north")

Waxa kale oo aad samayn kartaa init gaar ah ee tirooyinka. Dhammaan tirooyinka waa inay self isu xil saaraan.

 enum DeviceType { case phone case tablet init(screenWidth: Int) { self = screenWidth > 800 ? .tablet : .phone } }

Soo koobida kama dambaysta ah

Waxaan daboolnay dhammaan dhinacyada muhiimka ah ee bilowga ah ee Swift:


  • Bilawga, dhammaan goobaha waa in la buux dhaafiyaa.

  • Guryaha var ee ikhtiyaarka ah waxay ku xiran yihiin nil .

  • Qaab-dhismeedyadu waxay helayaan bilawga xubin ka ah oo bilaash ah.

  • Bilawga xubin ahaanta ka tirsani waxa uu baaba'aa marka bilawga caadada ah la qeexo.

  • Bilawga la qoondeeyey wuxuu xaqiijiyaa in dhammaan goobaha dadku ku badan yihiin oo wacaa super.init() .

  • Bilawga fududaysta wuxuu fududeeyaa bilawga isagoo wacaya bilawga loo qoondeeyay.

  • Bilaabayaasha fududaynta waxay had iyo jeer u socdaan toosan ( self.init ), iyo bilawga la qoondeeyay waxay u socdaan toosan ( super.init ).

  • Bilowga ku habboonaanta waxay noqotaa mid aan la heli karin fasal-hoosaadyada haddii ay ku dhawaaqaan guryo cusub.

  • Si loo soo celiyo fududeeyaha superclass , dhammaan curiyeyaasha loo qoondeeyay waa in la buriyo.

  • Si loo yareeyo tirada ka-hortagga, ku habboonaanta bilawga beddelka ayaa la isticmaali karaa.

  • Haddii fasal-hoosaadku aanu soo bandhigin cabbirro cusub, wuxuu si toos ah u dhaxlayaa dhammaan bilawgayaasha heerkiisa sare.

  • Haddii heerka sare uu leeyahay init() oo kaliya iyada oo aan la xaddidin, si toos ah ayaa loogu yeeraa bilowga fasalka hoose.

  • Bilowga loo baahan yahay wuxuu xaqiijiyaa joogitaanka fasalada hoose si loogu isticmaalo guud ahaan, borotokoolka, iyo Self() .

  • UIView.init() wac UIView.init(frame:) ama UIView.init(coder:) .

  • Bilawga fashilmay wuxuu soo celiyaa ikhtiyaari ikhtiyaari ah.

  • Enums leh qiima cayriin waxay helayaan lacag la'aan init?(rawValue:) .

  • Dhammaan curiyeyaasha tirooyinka waa inay self isu xil saaraan.


Waxaan rajeynayaa inaad ka heshay maqaalkan wax faa'iido leh. Haddi ay jiraan wax aan caddayn ama aad khalad u aragto, xor ayaad u tahay inaad ila soo xidhiidho si aan sharaxaad bilaash ah uga helo Telegram: @kfamyn .

Xiriirinta laxiriirta

  1. Luuqadda Swift Programming Language (6) / Bilawga
  2. Degdega Qoto dheer ee uu qoray Tjeerd ee 't Veen
  3. Telegram - @kfamyn