Top Banner
class or struct?
26

class vs struct

Apr 14, 2017

Download

Software

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: class vs struct

class or struct?

Page 2: class vs struct

Daniel Carlos

🔸 Cascavel - Ceará

🔸 Sistemas e Mídias Digitais - UFC

🔸 3+ years - Mobile Development

🔸 iOS Developer - HE:labs

Page 3: class vs struct

struct !

Page 4: class vs struct

🔸 Immutability

🔸 Member Initializer

🔸 Pass by value

struct - benefits

Page 5: class vs struct

Immutability

🔸 Easier to implement

🔸 Easier to understand

struct

Page 6: class vs struct

Immutability

class User { var name: String init(name:String) {self.name = name} }

class version

let user = User(name: "Daniel Carlos")

user.name = "Carlos Daniel"

Page 7: class vs struct

Immutability

class User { let name: String init(name:String) {self.name = name} }

class version

class MutableUser { var name: String init(name:String) {self.name = name} }

Page 8: class vs struct

Immutability

struct User { var name: String }

struct version

let user = User(name: "Daniel Carlos")

user.name = "Carlos Daniel"

Page 9: class vs struct

struct - benefits

🔸 Immutability

🔸 Member Initializer

🔸 Pass by value

Page 10: class vs struct

Member Initializer

struct User { var username: String var password: String }

User(username: "Joao", password: "Backwards321")

Page 11: class vs struct

struct - benefits

🔸 Immutability

🔸 Member Initializer

🔸 Pass by value

Page 12: class vs struct

Pass by value

Page 13: class vs struct

Pass by referenceside effect

ActorsVCactors: NSMutableArray

MovieVC

Page 14: class vs struct

Pass by referenceside effect

ActorsVC

numberOfRows

ActorsVC

cellForIndexPathMovieVC

actors.remove(0)

Page 15: class vs struct

When to use struct?

Page 16: class vs struct

struct

🔶 Represents Value

🔶 using == makes sense

🔶 no behavior

Page 17: class vs struct

Value Type

Only for simple model types

Page 18: class vs struct

Value Type

Only for simple model typesX

Page 19: class vs struct

Beyond model layer

class FavoriteVC: UIViewController { var favoriteMovies = [String]() var favoriteActor: String! }

Page 20: class vs struct

Beyond model layer

struct FavoriteModel { var favoriteActor: String var favoriteMovies: String }

class FavoriteVC: UIViewController { var model: FavoriteModel! }

Page 21: class vs struct

When to use class?

Page 22: class vs struct

class

🔶 Inheritance

🔶 Behavior

🔶 Register itself as delegate

🔶 To model real-world objects

Page 23: class vs struct

Conclusion

🔶 It’s not just changing form ‘class’ to ‘struct’

🔶 Let’s try to use struct beyond model

🔶 Swift is evolving. We should too!

Page 24: class vs struct

References

🔶 Protocol and Value Oriented Programming in UIKit Apps https://developer.apple.com/videos/play/wwdc2016/419/

🔶 A Warm Welcome to Structs and Value Types https://www.objc.io/issues/16-swift/swift-classes-vs-structs/

Page 25: class vs struct

Say ‘hi’!

/danielcarlosce

/danielcarlosbr

@danielcarlosce

Page 26: class vs struct

Thank you!