COMBINING SWIFT AND OBJECTIVE-C AGENDA Using Objective-C from - - PowerPoint PPT Presentation

combining swift and objective c agenda
SMART_READER_LITE
LIVE PREVIEW

COMBINING SWIFT AND OBJECTIVE-C AGENDA Using Objective-C from - - PowerPoint PPT Presentation

COMBINING SWIFT AND OBJECTIVE-C AGENDA Using Objective-C from Swift Using Swift from Objective-C Objective-C Behavior in Swift Classes IMPORTING OBJECTIVE-C INTO SWIFT APPLE FRAMEWORKS No additional setup required! import UIKit import


slide-1
SLIDE 1
slide-2
SLIDE 2

COMBINING SWIFT AND
 OBJECTIVE-C

slide-3
SLIDE 3

AGENDA

Using Objective-C from Swift Using Swift from Objective-C Objective-C Behavior in Swift Classes

slide-4
SLIDE 4

IMPORTING OBJECTIVE-C INTO SWIFT

slide-5
SLIDE 5

APPLE FRAMEWORKS

No additional setup required!

import UIKit import Foundation

slide-6
SLIDE 6

OBJECTIVE-C WITHIN SAME TARGET

Add Objective-C files to the Bridging-Header Bridging-Header needs to be referenced in build settings

Project- Bridging- Header.h A.swift B.swift MyObj.h Car.h MyObj.m Car.m

slide-7
SLIDE 7

THIRD PARTY FRAMEWORKS

If framework is built as a module: No additional setup required

import Parse

slide-8
SLIDE 8

THIRD PARTY FRAMEWORKS

If framework is written in Obj-C And framework is not built as a module Add framework header to bridging-header:

#ifndef Makestagram_Makestagram_Bridging_Header_h #define Makestagram_Makestagram_Bridging_Header_h #import <Parse/Parse.h> #endif

slide-9
SLIDE 9

CALLING OBJECTIVE-C FROM SWIFT

slide-10
SLIDE 10

CALLING OBJ-C FROM SWIFT

Most syntax translates almost 1-1 Special rules for initializers

slide-11
SLIDE 11

INITIALIZERS

[[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];

UITableView(frame: CGRectZero, style: .Grouped) [UIColor colorWithRed:0.5 green:0.0 blue:0.5 alpha:1.0]; UIColor(red: 0.5, green: 0.0, blue: 0.5, alpha: 1.0)

slide-12
SLIDE 12

METHODS

[myTableView insertSubview:mySubview atIndex:2]; myTableView.insertSubview(mySubview, atIndex: 2)

slide-13
SLIDE 13

PROPERTIES

myTextField.textColor = UIColor.darkGrayColor()

slide-14
SLIDE 14

OPTIONALITY IN OBJ-C

Since latest release of Objective-C we can specify whether values can be nil or not For unaudited APIs: Implicitly unwrapped Optionals by default!

slide-15
SLIDE 15

OPTIONALITY IN OBJ-C

// unaudited version -> generates warning + (UIView *)createViewWithName:(NSString *)name; // return value and argument are non-optional + (__nonnull UIView *)createViewWithNameSwiftier:(__nonnull NSString *)name; // return value and argument are optional + (__nullable UIView *)createViewWithNameSwiftierNullable:(__nullable NSString *)name;

slide-16
SLIDE 16

USING SWIFT FROM OBJECTIVE-C

slide-17
SLIDE 17

SWIFT WITHIN SAME TARGET

AppName

  • Swift.h

A.swift B.swift MyObj.h Car.h MyObj.m Car.m

slide-18
SLIDE 18

NSOBJECT SUBCLASSES

class SimpleNSObject: NSObject { } #import "InteropTest-Swift.h"

  • (void)test {

SimpleNSObject *simple2 = [[SimpleNSObject alloc] init]; }

slide-19
SLIDE 19

SWIFT ROOT CLASS

@objc public class Simple { public class func newInstance() -> Simple { return Simple() } } #import "InteropTest-Swift.h"

  • (void)test {

Simple *simple = [Simple newInstance]; }

slide-20
SLIDE 20

OBJECTIVE-C BEHAVIOR IN SWIFT CLASSES

slide-21
SLIDE 21

OBJECTIVE-C BEHAVIOR IN SWIFT CLASSES

class User { dynamic var name: String dynamic func setUp() { //... } }

Use the dynamic keyword to enable Objective-C
 features such as KVO and performSelector:

slide-22
SLIDE 22

ADDITIONAL RESOURCES

Using Swift with Cocoa and Objective-C (Apple) Mike Ash Talk: Swift and C Russ Bishop Talk: Unsafe Swift