• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            羅朝輝(飄飄白云)

            關(guān)注嵌入式操作系統(tǒng),移動平臺,圖形開發(fā)。-->加微博 ^_^

              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              85 隨筆 :: 0 文章 :: 169 評論 :: 0 Trackbacks

            Cocoa 開發(fā)

            Mac, iPhone/iPad開發(fā)相關(guān)的東東
                 摘要: KVO 并不是什么新事物,換湯不換藥,它只是觀察者模式在 Objective C 中的一種運(yùn)用,這是 KVO 的指導(dǎo)思想所在。其他語言實現(xiàn)中也有“KVO”,如 WPF 中的 binding。而在 Objective C 中又是通過強(qiáng)大的 runtime 來實現(xiàn)自動鍵值觀察的。本文對 KVO 的使用以及注意事項,內(nèi)部實現(xiàn)都詳細(xì)介紹了一番,對 KVO 的理解又深入一層了。Objective 中的 KVO 雖然可以用,但卻非完美,有興趣的了解朋友請查看《KVO 的缺陷》 以及改良實現(xiàn) MAKVONotificationCenter 。  閱讀全文
            posted @ 2012-11-17 17:41 羅朝輝 閱讀(21921) | 評論 (4)  編輯

                 摘要: 如果我們在 Objective C 中向一個對象發(fā)送它無法處理的消息,會出現(xiàn)什么情況呢?根據(jù)前文《深入淺出Cocoa之消息》的介紹,我們知道發(fā)送消息是通過 objc_send(id, SEL, ...) 來實現(xiàn)的,它會首先在對象的類對象的 cache,method list 以及父類對象的 cache, method list 中依次查找 SEL 對應(yīng)的 IMP;如果沒有找到且實現(xiàn)了動態(tài)方法決議機(jī)制就會進(jìn)行決議,如果沒有實現(xiàn)動態(tài)方法決議機(jī)制或決議失敗且實現(xiàn)了消息轉(zhuǎn)發(fā)機(jī)制就會進(jìn)入消息轉(zhuǎn)發(fā)流程,否則程序 crash。也就是說如果同時提供了動態(tài)方法決議和消息轉(zhuǎn)發(fā),那么動態(tài)方法決議先于消息轉(zhuǎn)發(fā),只有當(dāng)動態(tài)方法決議依然無法正確決議 selector 的實現(xiàn),才會嘗試進(jìn)行消息轉(zhuǎn)發(fā)。在前文中,我并沒有詳細(xì)講解動態(tài)方法決議,因此本文將詳細(xì)介紹之。  閱讀全文
            posted @ 2012-11-14 23:53 羅朝輝 閱讀(2370) | 評論 (0)  編輯

                 摘要: iOS 游戲開發(fā)教程資源,來自 http://www.raywenderlich.com  閱讀全文
            posted @ 2012-11-10 22:45 羅朝輝 閱讀(1097) | 評論 (0)  編輯

                 摘要: XCode 內(nèi)置GDB,我們可以在命令行中使用 GDB 命令來調(diào)試我們的程序。下面將介紹一些常用的命令以及調(diào)試技巧。  閱讀全文
            posted @ 2012-01-31 16:19 羅朝輝 閱讀(3282) | 評論 (0)  編輯

                 摘要: 在前文中總結(jié)到“ObjC 為每個類的定義生成兩個 objc_class ,一個即普通的 class,另一個即 metaclass。我們可以在運(yùn)行期創(chuàng)建這兩個 objc_class 數(shù)據(jù)結(jié)構(gòu),然后使用 objc_addClass 動態(tài)地創(chuàng)建新的類定義。”今天我們來如何在運(yùn)行時動態(tài)創(chuàng)建類。下面這個函數(shù)就是應(yīng)用前面講到的Class,MetaClass的概念,在運(yùn)行時動態(tài)創(chuàng)建一個類。  閱讀全文
            posted @ 2012-01-30 14:05 羅朝輝 閱讀(4678) | 評論 (2)  編輯

                 摘要: 最近打算寫一些ObjC中比較底層的東西,尤其是 runtime 相關(guān)的。從哪里入手呢?那當(dāng)然是最基本的類與對象。與C++相比,ObjC中的類與對象結(jié)構(gòu)要簡潔與一致得多(參考《深度探索C++對象模型》,你就知道C++中類與對象結(jié)構(gòu)的復(fù)雜)。本文將詳細(xì)講解ObjC中類與對象的結(jié)構(gòu),下回將講如何在 runtime 時操作類。

            總結(jié):ObjC 為每個類的定義生成兩個 objc_class ,一個即普通的 class,另一個即 metaclass。我們可以在運(yùn)行期創(chuàng)建這兩個 objc_class 數(shù)據(jù)結(jié)構(gòu),然后使用 objc_addClass 動態(tài)地創(chuàng)建新的類定義。這個夠動態(tài)夠強(qiáng)大的吧?下回講演示如何在運(yùn)行期動態(tài)創(chuàng)建新類。  閱讀全文
            posted @ 2012-01-19 16:58 羅朝輝 閱讀(4732) | 評論 (5)  編輯

                 摘要: Three20 是 facebook 開源的一款功能齊全又強(qiáng)大的庫,覆蓋 UI,network,JSON/XML解析等。其 github 倉庫在這里:https://github.com/facebook/three20 ,這個頁面也有如何在工程中添加 three20 庫的介紹,不過在 Lion 系統(tǒng)下以及 xcode 4.2 下有些許不同,英文好的同學(xué)可以參看原文。現(xiàn)整理如下:  閱讀全文
            posted @ 2011-12-31 17:45 羅朝輝 閱讀(2797) | 評論 (0)  編輯

                 摘要: 使用 OCMock 進(jìn)行 unit test 時,我們無法使用 stub 或 expect 測試類方法,那么又該怎樣測試類方法呢?
            下面是一個解決辦法:在測試類中的非類方法 wrap 一下類方法,然后測試 wrap 方法。  閱讀全文
            posted @ 2011-12-27 14:34 羅朝輝 閱讀(2298) | 評論 (0)  編輯

                 摘要: XCode 內(nèi)置了 OCUnit 單元測試框架,但目前最好用的測試框架應(yīng)該是 GHUnit。通過 GHUnit + OCMock 組合,我們可以在 iOS 下進(jìn)行較強(qiáng)大的單元測試功能。本文將演示如何在 XCode 4.2 下使用 OCUnit, GHUnit 和 OCMock 進(jìn)行 iOS 單元測試。  閱讀全文
            posted @ 2011-12-23 14:12 羅朝輝 閱讀(3020) | 評論 (1)  編輯

                 摘要: 花了幾天時間,在 iPad 上做了一個簡陋的 Dicom Viewer,這個查看器沒有使用 DCMTK 庫(雖然可用,但太龐大,造造輪子亦有樂趣),而是自己移植了一個 Dicom 文件解析器(Thanks to Amarnath S and his great post.)。該Dicom 文件解析器以及開源,源代碼在這里 or https://github.com/kesalin/DicomViewer。
            先來看看效果圖:  閱讀全文
            posted @ 2011-11-18 06:51 羅朝輝 閱讀(9610) | 評論 (0)  編輯

                 摘要: DCMTK是德國 Offis 公司開發(fā)的實現(xiàn) DICOM 協(xié)議的跨平臺開源 C++庫,在醫(yī)學(xué)領(lǐng)域里是很有名的,它支持Windows ,Linux,Mac OS,SUN等平臺。不過貌似在 iOS 平臺上編譯 DCMTK 的文檔很少很少,折騰了好久終于編譯成功了,記錄下來。  閱讀全文
            posted @ 2011-11-10 12:59 羅朝輝 閱讀(9381) | 評論 (13)  編輯

                 摘要: 前文已經(jīng)說了如何配置服務(wù)器,下面來演示如何創(chuàng)建一個新倉庫,然后與 XCode 結(jié)合。  閱讀全文
            posted @ 2011-11-08 17:54 羅朝輝 閱讀(8677) | 評論 (0)  編輯

                 摘要: XCode 默認(rèn)支持 Git 作為代碼倉庫,當(dāng)我們新建一個倉庫的時候,可以勾選創(chuàng)建默認(rèn)倉庫,只不過這個倉庫是在本地的。本文介紹如何在 mac 機(jī)器上創(chuàng)建 Git 服務(wù)器,總體思路是:使用 gitosis 來簡化創(chuàng)建過程,在用作服務(wù)器的機(jī)器上創(chuàng)建一個名為 git 的賬戶來創(chuàng)建 git 服務(wù)器,其他客戶端通過 ssh 機(jī)制訪問 git 服務(wù)器。  閱讀全文
            posted @ 2011-11-07 16:09 羅朝輝 閱讀(9794) | 評論 (2)  編輯

                 摘要: [譯]蘋果 Cocoa 編碼規(guī)范中文版
            官方文檔:Coding Guidelines for Cocoa
            本文檔下載:點擊這里  閱讀全文
            posted @ 2011-11-03 16:02 羅朝輝 閱讀(5528) | 評論 (1)  編輯

                 摘要: Objective C 的類方法(class method),即 static 方法,是用 + 修飾的方法。類方法是屬于類對象的,所以無需創(chuàng)建類的實例對象我們就可以直接使用它們。使用形式為:
            [ClassName classMethod];
            在這里 ClassName 代表的就是一個類對象,而不是作為一種類型。類名只有出現(xiàn)在接收消息的表達(dá)式中才代表一個類對象,其他情況下都表示一種類型。  閱讀全文
            posted @ 2011-11-01 17:14 羅朝輝 閱讀(2815) | 評論 (2)  編輯

            Full Cocoa 開發(fā) Archive

            久久无码一区二区三区少妇| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 久久久久波多野结衣高潮| 久久婷婷人人澡人人| 久久久久99这里有精品10 | 久久亚洲国产成人影院网站| 欧美日韩久久中文字幕| 激情伊人五月天久久综合| 精品久久久久久综合日本| 色老头网站久久网| 国内精品久久久久影院免费| 日本高清无卡码一区二区久久 | 狠狠综合久久综合88亚洲| 国产精品欧美久久久久天天影视 | 99久久精品国产一区二区蜜芽| 97精品伊人久久久大香线蕉| 99久久无码一区人妻| 午夜精品久久久久久毛片| 成人综合久久精品色婷婷| 久久综合伊人77777| 99久久国产主播综合精品| 老色鬼久久亚洲AV综合| 99久久做夜夜爱天天做精品| 久久久久亚洲精品无码网址| 国产日韩久久久精品影院首页| 久久亚洲精品国产精品| 亚洲精品乱码久久久久久蜜桃图片 | 精品国产一区二区三区久久久狼| 亚洲国产精品无码久久久久久曰 | 久久99精品国产麻豆不卡| 青青青国产精品国产精品久久久久 | 久久综合亚洲色一区二区三区| 久久99精品国产麻豆蜜芽| 九九热久久免费视频| 午夜精品久久影院蜜桃| 伊人久久精品无码av一区| 亚洲乱码中文字幕久久孕妇黑人| 亚洲精品白浆高清久久久久久| 漂亮人妻被中出中文字幕久久| 国内精品久久久久影院薰衣草 | 久久亚洲AV无码精品色午夜 |