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
0
49k
Weak, Strong, Unowned - Hector Matos
Realm
August 03, 2015
Tweet
Share
More Decks by Realm
See All by Realm
WWDC 2017 Review
realm
0
1.9k
Xcode shortcuts
realm
0
4.6k
Self Branding with GitHub
realm
0
4.2k
Realm Mobile Platform overview and demo
realm
0
1.9k
Realm advanced topics and demo
realm
0
1.9k
Realm introduction Seoul meetup 10
realm
0
2k
Stuart Hall: How I got 2.3 Million App Downloads
realm
0
1.7k
James Majors: What the Swiftly Func?
realm
1
4.1k
Simina Pasat: Continuous everything for iOS apps
realm
0
560
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
186
16k
Building Flexible Design Systems
yeseniaperezcruz
318
37k
Practical Orchestrator
shlominoach
181
9.7k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
220
21k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
226
16k
How to Ace a Technical Interview
jacobian
272
22k
Code Reviewing Like a Champion
maltzj
513
39k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
30
6k
Building a Scalable Design System with Sketch
lauravandoore
455
32k
The Pragmatic Product Professional
lauravandoore
24
5.8k
Debugging Ruby Performance
tmm1
70
11k
The Invisible Side of Design
smashingmag
294
49k
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
❤