29
Class or Struct by Akira Hirakawa @ Burpple

Class vs struct for Swift

Embed Size (px)

Citation preview

Page 1: Class vs struct for Swift

Class or Structby Akira Hirakawa @ Burpple

Page 2: Class vs struct for Swift

which should I create? class or struct?

Page 3: Class vs struct for Swift

What is the difference?

Page 4: Class vs struct for Swift

Apple says…

Page 5: Class vs struct for Swift

Both can• Define properties

• Define methods

• Define subscripts

• Define initializers

• Be extended

• Conform to protocols

Page 6: Class vs struct for Swift

class can, struct can not

• Inheritance

• Type casting

• Deinitialize

• Reference counting

• class is allocated on heap, struct is on stack

Page 7: Class vs struct for Swift

Inheritance

struct SampleStruct { var num = 0 }

// cannot:( struct SampleStruct2: SampleStruct { }

Page 8: Class vs struct for Swift

Reference countingclass SampleClass { } var array: [SampleClass] = .... for p in array { // increment reference counting ... // decrement reference counting }

struct SampleStruct { } var array: [SampleStruct] = .... for p in array { ... }

Page 9: Class vs struct for Swift

main difference is…

Page 10: Class vs struct for Swift

struct is Value Type

Page 11: Class vs struct for Swift

class is Reference Type

Page 12: Class vs struct for Swift

demo

Page 13: Class vs struct for Swift

so,which should I create? class or struct?

Page 14: Class vs struct for Swift

Apple says…

Page 15: Class vs struct for Swift

create struct, when…

• data structure is simple

• properties are value type(struct)

• purpose is not to update itself, when data is passed to a method

Page 16: Class vs struct for Swift

ex: CGPointpublic struct CGPoint { public var x: CGFloat public var y: CGFloat public init() public init(x: CGFloat, y: CGFloat) }

• data structure is simple

• properties are value type

• purpose is not to update itself, when data is passed to a method

Page 17: Class vs struct for Swift

be careful of creating struct, when …

Page 18: Class vs struct for Swift

many properties

• That struct is value type means it’s copied when assigned

• the more properties a struct has, the more memory machine needs, when copied

Page 19: Class vs struct for Swift

class object in struct

demo

Page 20: Class vs struct for Swift

Struct• String

• Array

• Dictionary

• Bool

• Int

• Double

• Float

Page 21: Class vs struct for Swift

different from other languages

Page 22: Class vs struct for Swift

performance?

Page 23: Class vs struct for Swift

case 1

small class VS small struct

just create instance

Page 24: Class vs struct for Swift

case 2

class with properties VS struct with properties

just create instance

Page 25: Class vs struct for Swift

case 3

call method with parameter

Page 26: Class vs struct for Swift

case 4

NSArray VS Array

Page 27: Class vs struct for Swift

case 5

Array<class> VS Array<struct>

Page 28: Class vs struct for Swift

Summary

• having few properties is better for struct

• “struct or class” depends on purpose

• ex: class can be used for Data object from API

• ex: struct can be used for Request data to API

Page 29: Class vs struct for Swift

Akira Hirakawa http://akirahrkw.xyz

https://github.com/akirahrkw

Thanks:)