Skip to content

Instantly share code, notes, and snippets.

View shabib87's full-sized avatar

Shabib Hossain shabib87

View GitHub Profile
enum OrderSize {
case small
case medium
case large
}
enum SpiceRange {
case spicy
case hot
case extraHot
class Biriyani {
let count: Int
let size: OrderSize
let spiceRange: SpiceRange
init (count: Int, size: OrderSize, spiceRange: SpiceRange) {
self.count = count
self.size = size
self.spiceRange = spiceRange
}
class Biriyani {
let count: Int
let size: OrderSize
let spiceRange: SpiceRange
let type: BiriyaniType
init (count: Int = 1, size: OrderSize = .medium, spiceRange: SpiceRange = .spicy, type: BiriyaniType = .nonveg) {
self.count = count
self.size = size
self.spiceRange = spiceRange
enum BiriyaniType {
case veg
case nonveg
}
class Biriyani {
let count: Int
let size: OrderSize
let spiceRange: SpiceRange
let type: BiriyaniType
@shabib87
shabib87 / RetainCycle1.swift
Last active March 10, 2017 19:12
In support to blog post
class Person {
let name: String
init(name: String) {
self.name = name
}
deinit {
print("\(name) is being deinitialized")
}
}
@shabib87
shabib87 / RetainCycle4.swift
Last active March 13, 2017 10:17
In support to blog post
class Person {
let name: String
var apartment: Apartment?
init(name: String) {
self.name = name
}
deinit {
print("\(name) is being deinitialized")
}
@shabib87
shabib87 / RetainCycle5.swift
Last active March 13, 2017 10:18
In support to blog post
var person: Person? = Person(name: "John Doe")
var apartment: Apartment? = Apartment(number: 123)
person?.apartment = apartment
apartment?.person = person
person = nil
apartment = nil
// output:
//
@shabib87
shabib87 / RetainCycle6.swift
Last active March 13, 2017 10:17
In support to blog post
class Person {
...
}
class Apartment {
...
weak var person: Person?
...
}
@shabib87
shabib87 / RetainCycle7.swift
Last active March 13, 2017 10:17
In support to blog post
class HTMLElement {
let name: String
let text: String?
lazy var asHTML: () -> String = {
return "<\(self.name)>\(self.text)</\(self.name)>"
}
init(name: String, text: String? = nil) {
@shabib87
shabib87 / RetainCycle8.swift
Last active March 13, 2017 10:17
In support to blog post
class HTMLElement {
...
lazy var asHTML: () -> String = { [weak self] in
guard let htmlElement = self else { return "" }
return "<\(htmlElement.name)>\(htmlElement.text)</\(htmlElement.name)>"
}
...
}