原创 Swift實現十大常見算法+各種樹

網上有各種語言實現算法的,但是就是swift語言實現寫的比較少,最近使用swift語言實現了十大常見算法、鏈表和一些樹結構。github地址。裏面有我實現的思路和一些完成項目代碼,歡迎相互交流點贊啊。 數據結構 1、算法效率的度量 2、

原创 iOS原生3D渲染--SceneKit框架學習筆記

1、ios 3D引擎 SceneKit 開發(1) --起始篇 2、ios 3D引擎 SceneKit 開發(2) --貼圖篇 3、ios 3D引擎 SceneKit 開發(3) --使用3dmax導出DAE文件 4、ios 3D引擎 S

原创 如何直觀形象地樹狀打印一棵二叉樹?

網上絕大部分的二叉樹打印效果都十分潦草,也不夠直觀形象,最近自己用JS寫了個圖形化小工具BinaryTreeGraph,也用Java寫了個打印器BinaryTreePrinter,還有個Objective-C版本BinaryTreePri

原创 RunTime實現原理剖析

對於RunTime恐怕幾乎每一個做iOS的人都聽說過,都用過吧,但是對於其具體實現好多人應該都不太清楚吧,今天我這分4部分,詳細的講解一下Runtime,讓大家對Runtime有一個全局的瞭解 1、isa解析 2、方法緩存 3、objc_

原创 Swift錯誤處理與異常拋出

當我們在一個方法或函數中實現某些功能時,如果遇到錯誤的用戶輸入則可能導致嚴重的異常問題,此時我們可以選擇通過拋出異常的方式。Swift 團隊在 Swift 2 中包含了一種很好的方式來處理與理想情況的偏差。Swift Error Handl

原创 45個值得收藏的 CSS 形狀

CSS能夠生成各種形狀。正方形和矩形很容易,因爲它們是 web 的自然形狀。添加寬度和高度,就得到了所需的精確大小的矩形。添加邊框半徑,你就可以把這個形狀變成圓形,足夠多的邊框半徑,你就可以把這些矩形變成圓形和橢圓形。 我們還可以使用 CS

原创 二叉樹實現

二叉樹 樹 樹 是 N(N>=0)個節點的有限集。當N=0時稱爲空樹。 在任意一棵非空樹中: 1、有且僅有一個特定的稱爲根節點 2、當N>1時,其餘節點可分爲M個互不相交的有限集合,其中每一個集合本身又是一棵樹,並且稱爲根的子樹 結點

原创 ES6 Generator 函數

Generator 函數是 ES6 提供的一種異步編程解決方案,語法行爲與傳統函數完全不同 Generator 函數有多種理解角度。語法上,首先可以把它理解成,Generator 函數是一個狀態機,封裝了多個內部狀態。 執行 Generat

原创 ES6 Class

ES6 的class可以看作只是一個語法糖,它的絕大部分功能,ES5 都可以做到,新的class寫法只是讓對象原型的寫法更加清晰、更像面向對象編程的語法而已。上面的代碼用 ES6 的class改寫,就是下面這樣。 class Point {

原创 ES6 編程風格

1、塊級作用域 (1)let 取代 var ES6 提出了兩個新的聲明變量的命令:let和const。其中,let完全可以取代var,因爲兩者語義相同,而且let沒有副作用。 if (true) { let x = 'hello'; }

原创 ES6數組的擴展

1、擴展運算符 擴展運算符(spread)是三個點(...)。它好比 rest 參數的逆運算,將一個數組轉爲用逗號分隔的參數序列 console.log(...[1, 2, 3]) // 1 2 3 console.log(1, ...[

原创 ES6對象的擴展

1、屬性的簡潔表示法 ES6 允許直接寫入變量和函數,作爲對象的屬性和方法。這樣的書寫更加簡潔。 const foo = 'bar'; const baz = {foo}; baz // {foo: "bar"} // 等同於 const

原创 ES6 Proxy

Proxy 用於修改某些操作的默認行爲,等同於在語言層面做出修改,所以屬於一種“元編程”(meta programming),即對編程語言進行編程。 Proxy 可以理解成,在目標對象之前架設一層“攔截”,外界對該對象的訪問,都必須先通過這

原创 ES6 Reflect

Reflect對象與Proxy對象一樣,也是 ES6 爲了操作對象而提供的新 API。Reflect對象的設計目的有這樣幾個 (1) 將Object對象的一些明顯屬於語言內部的方法(比如Object.defineProperty),放到Re

原创 ES6 Set 和 Map 數據結構

Set ES6 提供了新的數據結構 Set。它類似於數組,但是成員的值都是唯一的,沒有重複的值。 Set函數可以接受一個數組(或者具有 iterable 接口的其他數據結構)作爲參數,用來初始化。 // 例一 const set = new