Skip to content

Instantly share code, notes, and snippets.

View TerryCK's full-sized avatar

Guan-Jhen (Terry) TerryCK

  • Taipei, Taiwan
View GitHub Profile
@TerryCK
TerryCK / AppDelegate.swift
Last active July 4, 2017 05:41
AppDelegate
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
window = UIWindow(frame: UIScreen.main.bounds)
window?.makeKeyAndVisible()
window?.rootViewController = UINavigationController(rootViewController: ViewController())
return true
}
@TerryCK
TerryCK / ViewController.Swift
Created July 4, 2017 05:52
ViewController.Swift
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
title = "ViewController"
view.backgroundColor = UIColor.brown
}
@TerryCK
TerryCK / myPlayground.swift
Last active July 18, 2017 02:57
Closure retain cycle
class HTMLElement {
let name: String
let text: String
// 參考self的closure造成 記憶體無法釋放的retain cycle
lazy var asHTML: () -> String = {
return "<\(self.name)>\(self.text)</\(self.name)>"
}
init(name: String, text: String) {
@TerryCK
TerryCK / ClosureRetainCycle.swift
Last active July 18, 2017 03:01
ClosureRetainCycle Resolve
class HTMLElement {
let name: String
let text: String
lazy var asHTML: () -> String = {
[weak self] in //以弱參考修飾捕獲的self使參考計數不計
return "<\(self?.name)>\(self?.text)</\(self?.name)>",// 因為weak是弱參考屬optional所以在鏈上需要加入?使用
}
lazy var asHTML: () -> String = {
[weak self] in
guard let this = self else { return "" }
return "<\(this.name)>\(this.text)</\(this.name)>"
}
//換個角度來看self,先用guard let 安全的解包 optional self,在來使用this
@TerryCK
TerryCK / retainCyclePlayground.swift
Last active December 26, 2019 08:27
retainCyclePlayground
import Foundation
// Two object retain cycle pattern
class Person: NSObject {
var name: String
var deparment: Department?
init(name:String) {
self.name = name
}
@TerryCK
TerryCK / constraint.swift
Last active August 8, 2017 02:06
constraint.swift
let redView = UIView()
redView.backgroundColor = .red
view.addSubview(redView)
redView.translatesAutoresizingMaskIntoConstraints = false
redView.topAnchor.constraint(equalTo: view.topAnchor, constant: 40).isActive = true
redView.rightAnchor.constraint(equalTo: view.rightAnchor, constant: -40).isActive = true
redView.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 40).isActive = true
redView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -100).isActive = true
@TerryCK
TerryCK / NSLayoutConstraint.swift
Created August 8, 2017 02:12
NSLayoutConstraint.swift
let redView = UIView()
redView.backgroundColor = .red
view.addSubview(redView)
redView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
redView.topAnchor.constraint(equalTo: view.topAnchor, constant: 40),
redView.rightAnchor.constraint(equalTo: view.rightAnchor, constant: -40),
redView.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 40),
redView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -100),
@TerryCK
TerryCK / Singleton.swift
Created August 19, 2017 08:02
Singleton.swift
class SingletonClass {
static let shared = SingletonClass()
private init() { }
func someMethod() { }
let constantProperty = ""
var variableProperty = ""
}
@TerryCK
TerryCK / usingSigleton.swift
Created August 19, 2017 08:23
usingSigleton.swift
SingletonClass.shared.constantProperty
SingletonClass.shared.someMethod()
SingletonClass.shared.variableProperty