Slide 1

Slide 1 text

SwiftϑϨϯυϦʔObjective-C @nolili Noritaka Kamiya

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

Swift❤ Objective-C❤

Slide 7

Slide 7 text

try! Swift SwiftϑϨϯυϦʔObjective-C

Slide 8

Slide 8 text

try! Swift EXC_BAD_INSTRUCTION

Slide 9

Slide 9 text

try! Swift EXC_BAD_INSTRUCTION Rejected

Slide 10

Slide 10 text

Swift❤ Objective-C❤

Slide 11

Slide 11 text

جຊ

Slide 12

Slide 12 text

Nullability

Slide 13

Slide 13 text

@interface Memo : NSObject @property (nonatomic) NSDate *createdAt; @property (nonatomic) NSString *text; @property (nonatomic) NSArray *images; @end Nullability

Slide 14

Slide 14 text

Nullability open class Memo : NSObject { open var createdAt: Date! open var text: String! open var images: [Any]! }

Slide 15

Slide 15 text

@interface Memo : NSObject @property (nonatomic, nonnull) NSDate *createdAt; @property (nonatomic, nonnull) NSString *text; @property (nonatomic, nonnull) NSArray *images; @end Nullability

Slide 16

Slide 16 text

open class Memo : NSObject { open var createdAt: Date open var text: String open var images: [Any] } Nullability

Slide 17

Slide 17 text

NS_ASSUME_NONNULL_BEGIN @interface Memo : NSObject @property (nonatomic) NSDate *createdAt; @property (nonatomic) NSString *text; @property (nonatomic) NSArray *images; @end NS_ASSUME_NONNULL_END Nullability

Slide 18

Slide 18 text

LightWeight Generics

Slide 19

Slide 19 text

LightWeight Generics NS_ASSUME_NONNULL_BEGIN @interface Memo : NSObject @property (nonatomic) NSDate *createdAt; @property (nonatomic) NSString *text; @property (nonatomic) NSArray *images; @end NS_ASSUME_NONNULL_END

Slide 20

Slide 20 text

open class Memo : NSObject { open var createdAt: Date open var text: String open var images: [Any] } Nullability

Slide 21

Slide 21 text

LightWeight Generics NS_ASSUME_NONNULL_BEGIN @interface Memo : NSObject @property (nonatomic) NSDate *createdAt; @property (nonatomic) NSString *text; @property (nonatomic) NSArray *images; @end NS_ASSUME_NONNULL_END

Slide 22

Slide 22 text

LightWeight Generics open class Memo : NSObject { open var createdAt: Date open var text: String open var images: [UIImage] }

Slide 23

Slide 23 text

ΞϊςʔγϣϯͰSwiftଆ΁ؾ࣋ͪΛද໌͢Δ

Slide 24

Slide 24 text

Blocks / Closure

Slide 25

Slide 25 text

memo.save { _ in } TrailingClosure typedef void (^SomeCompletionHandler)(NSString *); @interface Memo : NSObject - (void)save:(SomeCompletionHandler)handler; @end

Slide 26

Slide 26 text

Closure typedef void (^SomeCompletionHandler)(NSString *); @interface Memo : NSObject - (void)save:(nullable SomeCompletionHandler)handler; @end memo.save()

Slide 27

Slide 27 text

noescape typedef void (^SomeCompletionHandler)(NSString *); @interface Notes : NSObject + (void)save:(__attribute__((noescape)) SomeCompletionHandler)handler; @end memo.save { _ in someSelfMethod() // self. ෆཁ }

Slide 28

Slide 28 text

Error/Exception

Slide 29

Slide 29 text

Error + (BOOL)send:(NSError **)error; open class func send() throws

Slide 30

Slide 30 text

@throw @try @catch @finally

Slide 31

Slide 31 text

@throw @try @catch @finally X

Slide 32

Slide 32 text

w $PEJOH(VJEFMJOFTGPS$PDPBʹԊͬͯॻ͘ w (FOFSBUFE*OUFSGBDFΛΈΔ w 4UBUJD"OBMZ[FSΛ׆༻͢Δ w 4XJGU͔ΒJNQPSUͯ͠ΈΔ w ͔͍͍ͬ͜0CKFDUJWF$͸4XJGU͔ΒΈͯ΋͔͍͍ͬ͜ ৺͕͚͍ͯΔ͜ͱ

Slide 33

Slide 33 text

No content

Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

No content

Slide 37

Slide 37 text

w $PDPBίʔσΟϯάΨΠυϥΠϯʹԊͬͯॻ͘ w (FOFSBUFE*OUFSGBDFΛΈΔ w 4UBUJD"OBMZ[FSΛ׆༻͢Δ w 4XJGU͔ΒJNQPSUͯ͠ΈΔ w ͔͍͍ͬ͜0CKFDUJWF$͸4XJGU͔ΒΈͯ΋͔͍͍ͬ͜ ৺͕͚͍ͯΔ͜ͱ

Slide 38

Slide 38 text

SwiftϑϨϯυϦʔObjective-C @nolili Noritaka Kamiya