Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
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.8k
Self Branding with GitHub
realm
0
4.4k
Realm Mobile Platform overview and demo
realm
0
2.1k
Realm advanced topics and demo
realm
0
2.1k
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
670
Featured
See All Featured
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
Building the Perfect Custom Keyboard
takai
2
910
A designer walks into a library…
pauljervisheath
211
25k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
630
Amusing Abliteration
ianozsvald
1
350
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
300
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
990
Typedesign – Prime Four
hannesfritz
42
3.2k
For a Future-Friendly Web
brad_frost
184
10k
Faster Mobile Websites
deanohume
310
32k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.9k
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
❤