Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Weak, Strong, Unowned - Hector Matos
Search
Realm
August 03, 2015
49k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Weak, Strong, Unowned - Hector Matos
Realm
August 03, 2015
More Decks by Realm
See All by Realm
WWDC 2017 Review
realm
0
2.2k
Xcode shortcuts
realm
0
4.7k
Self Branding with GitHub
realm
0
4.3k
Realm Mobile Platform overview and demo
realm
0
2.1k
Realm advanced topics and demo
realm
0
2k
Realm introduction Seoul meetup 10
realm
0
2.2k
Stuart Hall: How I got 2.3 Million App Downloads
realm
0
2k
James Majors: What the Swiftly Func?
realm
1
4.3k
Simina Pasat: Continuous everything for iOS apps
realm
0
660
Featured
See All Featured
Claude Code のすすめ
schroneko
67
230k
Between Models and Reality
mayunak
4
340
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
630
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
780
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.5k
Being A Developer After 40
akosma
91
590k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.5k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
170
Un-Boring Meetings
codingconduct
0
320
Agile that works and the tools we love
rasmusluckow
331
21k
Transcript
Weak, Strong, Unowned Oh, My!
Quick Intro
Hi! I'm Hector Matos
None
Sr. Software Engineer @ Capital One
@allonsykraken on the Twitters
Father of KrakenDev.io
ARC
- (void)releaseTheKraken { Kraken *kraken = [[Kraken alloc] init]; //+1
retain [kraken release]; //generated by ARC }
Magic has it's limitations And so does ARC
Leaked Memory & Retain Cycles
None
None
Strong References Default in Swift
Now Stop, Example Time //Kraken holds a strong reference to
the yummy human. class Kraken { var yummyHuman: Human }
// The animation closure holds a strong reference to self
// self.retainCount is 1 here UIView.animateWithDuration(0.3) { // self.retainCount is 2 here self.view.alpha = 0.0 }
Questions?
Weak References Safe - Independent
Stop, Collaborate, & Listen! (to my next example) class KrakensFace:
UIView { @IBOutlet weak var razorSharpTeeth: UIView! } KrakenAPI.eat(yummyHuman, whenFinished: { [weak self] in self?.waitForNextMealTime() })
WTF is "[weak self] in"?!
Capture Lists It's just an array. That's all it is.
There, there. It's all over now. !
KrakenAPI.eat(yummyHuman, finished: { [weak self, unowned lovedOne = yummyHuman.lovedOne] in
self?.waitForNextMealTime() })
Questions?
Unowned References Mutual Dependence
class Human { var heart: ! func seeKrakenComing() { heart.haveHeartAttack()
} } class !: Organ { unowned let human: Human init(human: Human) { self.human = human } func haveHeartAttack() { human.die() } } let human = Human() human.heart = !(human: human)
Questions?
None
❤