Slide 1

Slide 1 text

ࣗݾ঺հ w ԦቨʢΦ΢ΪPOFWDBUʣ+1 w -JOF"ET -JOFόΠτ (BNF$BTU 5IVOEFS  w IUUQTHJUIVCDPNPOFWDBU w IUUQPOFWDBU

Slide 2

Slide 2 text

ੈքҰ൪ͷ ϓϩάϥϛϯάݴޠʁ

Slide 3

Slide 3 text

+BWB4DSJQUؒҧ͍ͳ͍ IUUQHJUIVUJOGP

Slide 4

Slide 4 text

+BWB4DSJQU$PSF J04

Slide 5

Slide 5 text

+BWB4DSJQU$PSF var num = 5 + 5 var triple = function(value) { return value * 3} triple(num) //30 import JavaScriptCore let context = JSContext() context.evaluateScript("var num = 5 + 5") context.evaluateScript("var triple = function(value) { return value * 3 }") let tripleNum: JSValue = context.evaluateScript("triple(num)") +BWB4DSJQU 4XJGU

Slide 6

Slide 6 text

import JavaScriptCore let context = JSContext() context.evaluateScript("var num = 5 + 5") context.evaluateScript("var triple = function(value) { return value * 3 }") let tripleNum: JSValue = context.evaluateScript("triple(num)") 1MBJO4USJOH'VODUJPOBMJUZ

Slide 7

Slide 7 text

import JavaScriptCore let context = JSContext() context.evaluateScript("var num = 5 + 5") context.evaluateScript("var triple = function(value) { return value * 3 }") let tripleNum: JSValue = context.evaluateScript("triple(num)") 1MBJO4USJOH'VODUJPOBMJUZ 3VOUJNF

Slide 8

Slide 8 text

+41BUDI Ԧቨ

Slide 9

Slide 9 text

+BWB4DSJQUΛ࢖ͬͯɺ ΞϓϦͷϝιʔυΛࠩ͠ସ͑ΔϥΠϒϥϦʔ +41BUDIͱ͸ IUUQTHJUIVCDPNCBOH+41BUDI

Slide 10

Slide 10 text

8IZ w "QQਃ੥ͱϨϏϡʔ ஗͍ w ಛٸਃ੥೥੍ؒݶ w मਖ਼͚ͩͰ͸ͳ͘ɺػ ೳ௥Ճ΋Մೳɻ

Slide 11

Slide 11 text

࢖͍ํ

Slide 12

Slide 12 text

࢖͍ํ

Slide 13

Slide 13 text

࢖͍ํ w $PDPB1PETQPE+41BUDI w <+1&OHJOFTUBSU&OHJOF> w <+1&OHJOFFWBMVBUF4DSJQUTDSJQU> 4DSJQU

Slide 14

Slide 14 text

ࠩ͠ସ͑Δ΋ͷΛఆٛ͢ΔKT 4DSJQU ϩʔΧϧϑΝΠϧɺωοτɺετϦϯά ಛఆͳOBNFDPOWFOUJPOͰɺ0CKFDUJWF$ޓ׵

Slide 15

Slide 15 text

%FNP Talk is cheap. Show me the code.

Slide 16

Slide 16 text

3VMFEFpOF$MBTT w Ϋϥεͷϝιʔυ࠶ఆٛ defineClass("ClassName", { method: function() { ... }, }) @implementation ClassName -(void)method { … } defineClass(classDeclaration, instanceMethods, classMethods)

Slide 17

Slide 17 text

3VMFΞϯμʔόʔ w ΫϥεͷεϖʔεΛࠩ͠ସ͑Δ @implementation JPTestObject - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { } @end defineClass("JPTableViewController", { tableView_didSelectRowAtIndexPath: function(tableView, indexPath) { ... }, })

Slide 18

Slide 18 text

3VMF03*( w 03*(Λ෇͍ͨΒɺલͷ࣮૷ΛݺͿ @implementation JPTableViewController - (void) viewDidLoad { } @end defineClass("JPTableViewController", { viewDidLoad: function() { self.ORIGviewDidLoad(); }, })

Slide 19

Slide 19 text

3VMFTFUUFSHFUUFS w TFUUFSPSHFUUFSΛ࢖͏ @interface JPTableViewController @property (nonatomic) NSArray *data; @end @implementation JPTableViewController @end defineClass("JPTableViewController", { viewDidLoad: function() { var data = self.data() self.setData(data.toJS().push("JSPatch") }, })

Slide 20

Slide 20 text

3VMF0UIFS IUUQTHJUIVCDPNCBOH+41BUDI XJLJ6TBHFPGEFpOF$MBTT μϒϧΞϯμʔόʔ CMPDL($% TVQFS QSPUPDPM OFXQSPQFSUZNFUIPE FYUFOTJPO

Slide 21

Slide 21 text

+41BUDI࣮ݱݪཧ ForwardInvocation Core Concept: IUUQCMPHDOCBOHOFUUFDI தࠃޠͰ͕͢ɻɻ

Slide 22

Slide 22 text

ϦεΫ w தؒऀ߈ܸ .*5. )5514ඞཁ w ϩʔΧϧվ͟Μ҉߸Խ͢Δ w ύϑΥʔϚϯεόʔδϣϯ؅ཧΫϦςΟΧϧ όά͚ͩ

Slide 23

Slide 23 text

4XJGU

Slide 24

Slide 24 text

4XJGU w /40CKFDUͱγεςϜ"1*0, EZOBNJD EJTQBUDI  w ଞͷ͸EZOBNJDLFZXPSEΛ௥Ճඞཁ SVOUJNF ར༻͢ΔͨΊ  w +4ʹɺDMBTT໊ͷલNPEVMF໊௥Ճඞཁ w ݁࿦ɿ࢖͑·͕͢ɺ໘౗ɻ΍Ίͯͷํ͕͍͍

Slide 25

Slide 25 text

5IBOLZPV '"2