Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
JSPatch Introduction
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Wei Wang
August 06, 2015
Programming
230
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
JSPatch Introduction
Wei Wang
August 06, 2015
More Decks by Wei Wang
See All by Wei Wang
網路之難,難於上青天 - iPlayground 2019
onevcat
11
5.5k
GMTC 2019 - 在分歧中发展,2019 我们能用 Swift 做什么
onevcat
0
1.3k
从 Swift 到机器学习
onevcat
2
1.1k
iOS Dev - The Dark Side
onevcat
0
170
面向协议编程与 Cocoa 的邂逅
onevcat
14
5k
Swift 3 - From Expert to Beginner
onevcat
2
280
如何打造一个让人愉快的框架
onevcat
4
23k
Objective-C Runtime Swizzle
onevcat
0
240
Unity Memory
onevcat
0
190
Other Decks in Programming
See All in Programming
夏だ!祭りだ!祭りとはドメインモデリングでは?
ryugen04
0
230
楽しそうなつよつよエンジニアと目が死んでる僕/A brilliant engineer having a blast, and dead-eyed me.
3l4l5
2
110
複数の Claude Code が"放置"されてしまう問題をCLI ダッシュボードを自作して解決した話
sumihiro3
1
680
AIが無かった頃の素敵な出会いの話
codmoninc
1
410
【やさしく解説 設計編・中級 #6】良いアーキテクチャとは ~ 一本の登り道の、行き先 ~
panda728
PRO
0
210
生成AIで帳票OCRが「簡単に」作れる時代になった?
kon_shou
0
750
プロポーザルを書いてもらう
pvcresin
0
410
Android CLI
fornewid
0
220
<title><a id="</title>君はこのHTMLをパースできるか"></a></title> #雑LT_study
pizzacat83
0
140
freee が目指す データ マネジメント戦略 AI-Ready 時代を支える 攻めのガバナンスとは
freee
PRO
0
340
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
12
18k
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
3
490
Featured
See All Featured
Amusing Abliteration
ianozsvald
1
240
[SF Ruby Conf 2025] Rails X
palkan
2
1.3k
The Language of Interfaces
destraynor
162
27k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
350
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
460
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
330
How GitHub (no longer) Works
holman
316
150k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
790
Speed Design
sergeychernyshev
33
2k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
790
Transcript
ࣗݾհ w ԦቨʢΦΪPOFWDBUʣ+1 w -JOF"ET -JOFόΠτ (BNF$BTU 5IVOEFS w
IUUQTHJUIVCDPNPOFWDBU w IUUQPOFWDBU
ੈքҰ൪ͷ ϓϩάϥϛϯάݴޠʁ
+BWB4DSJQUؒҧ͍ͳ͍ IUUQHJUIVUJOGP
+BWB4DSJQU$PSF J04
+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
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
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
+41BUDI Ԧቨ
+BWB4DSJQUΛͬͯɺ ΞϓϦͷϝιʔυΛࠩ͠ସ͑ΔϥΠϒϥϦʔ +41BUDIͱ IUUQTHJUIVCDPNCBOH+41BUDI
8IZ w "QQਃͱϨϏϡʔ ͍ w ಛٸਃ੍ؒݶ w मਖ਼͚ͩͰͳ͘ɺػ ೳՃՄೳɻ
͍ํ
͍ํ
͍ํ w $PDPB1PETQPE+41BUDI w <+1&OHJOFTUBSU&OHJOF> w <+1&OHJOFFWBMVBUF4DSJQUTDSJQU> 4DSJQU
ࠩ͠ସ͑ΔͷΛఆٛ͢ΔKT 4DSJQU ϩʔΧϧϑΝΠϧɺωοτɺετϦϯά ಛఆͳOBNFDPOWFOUJPOͰɺ0CKFDUJWF$ޓ
%FNP Talk is cheap. Show me the code.
3VMFEFpOF$MBTT w Ϋϥεͷϝιʔυ࠶ఆٛ defineClass("ClassName", { method: function() { ... },
}) @implementation ClassName -(void)method { … } defineClass(classDeclaration, instanceMethods, classMethods)
3VMFΞϯμʔόʔ w ΫϥεͷεϖʔεΛࠩ͠ସ͑Δ @implementation JPTestObject - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{ } @end defineClass("JPTableViewController", { tableView_didSelectRowAtIndexPath: function(tableView, indexPath) { ... }, })
3VMF03*( w 03*(Λ͍ͨΒɺલͷ࣮ΛݺͿ @implementation JPTableViewController - (void) viewDidLoad { }
@end defineClass("JPTableViewController", { viewDidLoad: function() { self.ORIGviewDidLoad(); }, })
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") }, })
3VMF0UIFS IUUQTHJUIVCDPNCBOH+41BUDI XJLJ6TBHFPGEFpOF$MBTT μϒϧΞϯμʔόʔ CMPDL($% TVQFS QSPUPDPM OFXQSPQFSUZNFUIPE FYUFOTJPO
+41BUDI࣮ݱݪཧ ForwardInvocation Core Concept: IUUQCMPHDOCBOHOFUUFDI தࠃޠͰ͕͢ɻɻ
ϦεΫ w தؒऀ߈ܸ .*5. )5514ඞཁ w ϩʔΧϧվ͟Μ҉߸Խ͢Δ w ύϑΥʔϚϯεόʔδϣϯཧΫϦςΟΧϧ όά͚ͩ
4XJGU
4XJGU w /40CKFDUͱγεςϜ"1*0, EZOBNJD EJTQBUDI w ଞͷEZOBNJDLFZXPSEΛՃඞཁ SVOUJNF ར༻͢ΔͨΊ
w +4ʹɺDMBTT໊ͷલNPEVMF໊Ճඞཁ w ݁ɿ͑·͕͢ɺ໘ɻΊͯͷํ͕͍͍
5IBOLZPV '"2