国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網(wǎng)站 > 建站經(jīng)驗 > 正文

IOS開發(fā):在Swift中使用Java Script的方法和技巧

2019-11-02 14:16:37
字體:
來源:轉載
供稿:網(wǎng)友

   在RedMonk發(fā)布的2015年1月編程語言排行榜中,Swift采納率排名迅速飆升,從剛剛面世時的68位躍至22位,Objective-C仍然穩(wěn)居TOP10,而JavaScript則憑借著其在iOS平臺上原生體驗優(yōu)勢成為了年度最火熱的編程語言。

IOS開發(fā):在Swift中使用JavaScript的方法和技巧 電腦高手

  而早在2013年蘋果發(fā)布的OS X Mavericks和iOS 7兩大系統(tǒng)中便均已加入了JavaScriptCore框架,能夠讓開發(fā)者輕松、快捷、安全地使用JavaScript語言編寫應用。不論叫好叫罵,JavaScript霸主地位已成事實。開發(fā)者們趨之若鶩,JS工具資源層出不窮,用于OSX和iOS系統(tǒng)等高速虛擬機也蓬勃發(fā)展起來。

  JSContext/JSValue

  JSContext即JavaScript代碼的運行環(huán)境。一個Context就是一個JavaScript代碼執(zhí)行的環(huán)境,也叫作用域。當在瀏覽器中運行JavaScript代碼時,JSContext就相當于一個窗口,能輕松執(zhí)行創(chuàng)建變量、運算乃至定義函數(shù)等的JavaScript代碼:

  //Objective-C

  JSContext *context = [[JSContext alloc] init];

  [context evaluateScript:@"var num = 5 + 5"];

  [context evaluateScript:@"var names = ['Grace', 'Ada', 'Margaret']"];

  [context evaluateScript:@"var triple = function(value) { return value * 3 }"];

  JSValue *tripleNum = [context evaluateScript:@"triple(num)"];

  //Swift

  let context = JSContext()

  context.evaluateScript("var num = 5 + 5")

  context.evaluateScript("var names = ['Grace', 'Ada', 'Margaret']")

  context.evaluateScript("var triple = function(value) { return value * 3 }")

  let tripleNum: JSValue = context.evaluateScript("triple(num)")

  像JavaScript這類動態(tài)語言需要一個動態(tài)類型(Dynamic Type), 所以正如代碼最后一行所示,JSContext里不同的值均封裝在JSValue對象中,包括字符串、數(shù)值、數(shù)組、函數(shù)等,甚至還有Error以及null和undefined。

  JSValue包含了一系列用于獲取Underlying Value的方法,如下表所示:

  想要檢索上述示例中的tripleNum值,只需使用相應的方法即可:

  //Objective-C

  NSLog(@"Tripled: %d", [tripleNum toInt32]);

  // Tripled: 30

  //Swift

  println("Tripled: (tripleNum.toInt32())")

  // Tripled: 30

  下標值 (Subscripting Values)

  通過在JSContext和JSValue實例中使用下標符號可以輕松獲取上下文環(huán)境中已存在的值。其中,JSContext放入對象和數(shù)組的只能是字符串下標,而JSValue則可以是字符串或整數(shù)下標。

  //Objective-C

  JSValue *names = context[@"names"];

  JSValue *initialName = names[0];

  NSLog(@"The first name: %@", [initialName toString]);

  // The first name: Grace

  //Swift

  let names = context.objectForKeyedSubscript("names")

  let initialName = names.objectAtIndexedSubscript(0)

  println("The first name: (initialName.toString())")

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 东光县| 金堂县| 青海省| 铜川市| 平泉县| 玉树县| 商河县| 五莲县| 大洼县| 平昌县| 普兰店市| 东宁县| 彭泽县| 安多县| 尚义县| 玛沁县| 宜州市| 华坪县| 夏邑县| 建德市| 贺兰县| 红安县| 郧西县| 苏尼特左旗| 松滋市| 北流市| 新宾| 鹤壁市| 安塞县| 三河市| 昌吉市| 抚远县| 阜宁县| 常州市| 宁夏| 青河县| 龙川县| 承德县| 寿阳县| 遂平县| 长垣县|