• <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>

            羅朝輝(飄飄白云)

            關注嵌入式操作系統,移動平臺,圖形開發。-->加微博 ^_^

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

            Cocoa 開發

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

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

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

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

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

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

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

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

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

                 摘要: XCode 內置了 OCUnit 單元測試框架,但目前最好用的測試框架應該是 GHUnit。通過 GHUnit + OCMock 組合,我們可以在 iOS 下進行較強大的單元測試功能。本文將演示如何在 XCode 4.2 下使用 OCUnit, GHUnit 和 OCMock 進行 iOS 單元測試。  閱讀全文
            posted @ 2011-12-23 14:12 羅朝輝 閱讀(3005) | 評論 (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 羅朝輝 閱讀(9587) | 評論 (0)  編輯

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

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

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

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

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

                 摘要: 在前文 深入淺出 Cocoa 之 Framework 中講解了 Framework,接下來講解 plugin。如果你對 Framework 還不太熟悉的話,請閱讀那篇文中,在本例中使用到了 framework,并在本文中沒有詳細講述其創建和使用過程。

            為什么要引入插件?
            我們知道編譯程序時,會連接相關 framework,通常我們所連接的框架是 Foundation 和 Application 框架。當程序啟動運行時,每個被連接到的 framework 都會被加載到該程序的 objc 運行時環境中。如果我們想向正在運行的程序加載新的 framework,那該怎么辦呢?答案之一就是使用 plugin 機制。cocoa 的 plugin 機制通常由 NSBundle 類來實現,而實現動態加載的功能由函數 objc_addClass 來完成。一般我們無需與 objc_addClass 這個函數打交道,我們使用 NSBundle 來完成絕大部分與 plugin 相關的工作。

            plugin 機制能夠讓我們開發出高度模塊化,可定制以及可擴展的應用程序,并  閱讀全文
            posted @ 2011-10-28 14:44 羅朝輝 閱讀(2553) | 評論 (0)  編輯

                 摘要: Framework 簡介
            Mac OS X 擴展了 framework 的功能,讓我們能夠利用它來共享代碼和資源。framework 在概念上有點像 Window 下的庫,但是比庫更加強大,通過 framework 我們可以共享所有形式的資源,如動態共享庫,nib 文件,圖像字符資源以及文檔等。系統會在需要的時候將 framework 載入內存中,多個應用程序可以同時使用同一個 framework,而內存中的拷貝只有一份。一個 framework 同時也是一個 bundle,我們可以在 finder 里瀏覽其內容,也可以在代碼中通過 NSBundle 訪問它。利用 framework 我們可以實現動態或靜態庫的功能。與動態/靜態庫相比,framework 有如下優勢:  閱讀全文
            posted @ 2011-10-16 14:10 羅朝輝 閱讀(4409) | 評論 (3)  編輯

                 摘要: 最近在研究如何在 Mac 上使用 .Net,在這個過程中,找到幾個好玩的東西:
            第一個是,CSharpPlugin,鏈接為:http://code.google.com/p/cocoa-sharp-dev/wiki/CSharpPlugin,這個插件很神奇,可以讓我們在 XCode 中編寫 C#,并在編寫的C#中可以調用 Cocoa API,牛吧?可惜的是這個插件很久沒有更新了,最后的更新時間為 2007年5月。
            第二個是,MonoDevelop,鏈接為:http://monodevelop.com/,一般我們還需要安裝 Moonlight 。我們可以在其中編寫具有 Cocoa 界面風格的 C# 程序。這個 IDE 做得非常清爽,并在持續更新中。
            第三個是, 使用 Emonic 插件在 Eclipse 上開發,下面將介紹這種方式。  閱讀全文
            posted @ 2011-10-15 14:21 羅朝輝 閱讀(2906) | 評論 (2)  編輯

                 摘要: 本文通過使用 Bonjour 在 Mac 上實現了一個簡單的服務器/客戶端聊天程序,以演示如何使用 Bonjour 進行網絡編程,其中使用到 CFSokcet, NSNetService/NSNetServiceBrowser, NSInputStream/NSOutStream 的用法。  閱讀全文
            posted @ 2011-09-25 15:43 羅朝輝 閱讀(2538) | 評論 (0)  編輯

                 摘要: 前面講解了 Core Data 的框架,并完全手動編寫代碼演示了 Core Data 的運作過程。下面我們來演示如何結合 XCode 強大的可視化編輯以及 Cocoa 鍵值編碼,綁定機制來使用 Core Data。有了上面提到的哪些利器,在這個示例中,我們無需編寫 NSManagedObjectModel 代碼,也無需編寫 NSManagedObjectContext,工程模版在背后為我們做了這些事情。

            今天要完成的這個示例,有兩個 Entity:StudentEntity 與 ClassEntity,各自有一個名為 name 的Attribute 其中 StudentEntity 通過一個名為 inClass 的 relationship 與 ClassEntity關聯,而 ClassEntity 也有一個名為 students 的 relationship 與 Entity:StudentEntity 關聯,這是一個一對多的關系。此外 ClassEntity 還有一個名為 monitor 的 relationship 關聯到 StudentEntity,代表該班的  閱讀全文
            posted @ 2011-09-09 14:21 羅朝輝 閱讀(3219) | 評論 (0)  編輯

                 摘要: NSWorkspace 為應用程序提供如下服務:
            1)打開,操作文件/設備,獲取文件/設備信息
            2)跟蹤文件,設備以及數據庫的變動
            3)設置或獲取文件的 Finder 信息
            4)啟動應用程序。  閱讀全文
            posted @ 2011-09-05 16:04 羅朝輝 閱讀(3184) | 評論 (0)  編輯

                 摘要: 前面詳細講解了 Core Data 的框架以及設計的類,下面我們來講解一個完全手動編寫代碼使用這些類的示例,這個例子來自蘋果官方示例。在這個例子里面,我們打算做這樣一件事情:記錄程序運行記錄(時間與 process id),并保存到xml文件中。我們使用 Core Data 來做這個事情。  閱讀全文
            posted @ 2011-09-03 23:16 羅朝輝 閱讀(3437) | 評論 (0)  編輯

                 摘要: Core data 是 Cocoa 中處理數據,綁定數據的關鍵特性,其重要性不言而喻,但也比較復雜。Core Data 相關的類比較多,初學者往往不太容易弄懂。計劃用三個教程來講解這一部分:
            框架詳解:講解 Core data 框架,運作過程,設計的類;
            Core data應用程序示例:通過生成一個使用 Core data 的應用程序來講解如何 在 XCode 4 中使用 Core data。
            手動創建Core data示例:不利用框架自動生成代碼,完全自己編寫所有的 Core data 相關代碼的命令行應用程序來深入講解 Core data的使用。  閱讀全文
            posted @ 2011-09-01 14:14 羅朝輝 閱讀(5843) | 評論 (0)  編輯

                 摘要: block 是 Apple 在 GCC 4.2 中擴充的新語法特性,其目的是支持多核并行編程。我們可以將 dispatch_queue 與 block 結合起來使用,方便進行多線程編程。  閱讀全文
            posted @ 2011-08-26 13:23 羅朝輝 閱讀(12421) | 評論 (5)  編輯

                 摘要: 本文詳細講述了Object-C 中消息的里里外外,涉及類結構class, SEL, IMP,消息的動態綁定,消息轉發等。  閱讀全文
            posted @ 2011-08-15 20:20 羅朝輝 閱讀(7957) | 評論 (1)  編輯

                 摘要: Objective C 與 C++ 兩者最大的相同便是: 都是從 C 演化而來的面向對象語言, 兩者都兼容標準 C 語言; 兩者最大的不同便是: Objective C 提供了運行期動態綁定機制, 而 C++ 是編譯時靜態綁定, 并通過嵌入類(多重繼承)和虛函數(虛表)來模擬實現. Objective C 在語言層次上支持動態消息轉發, 其函數調用語法為 [object function], 而且C++ 為 object->function(). 兩者的語義也有不同, 在 Objective C 里是說發送消息到一個對象上, 至于這個對象能不能處理消息(也就是說實現了這個函數與否)以及是處理還是轉發消息都不會 crash, 而在 C++ 里是說對象進行了某個操作,如果對象沒有這個操作的話,要么編譯會報錯(靜態綁定),要么程序會 crash 掉的(動態綁定).
              閱讀全文
            posted @ 2010-12-26 12:30 羅朝輝 閱讀(10472) | 評論 (7)  編輯

            武侠古典久久婷婷狼人伊人| 久久精品国产99国产精品亚洲 | 伊人丁香狠狠色综合久久| 996久久国产精品线观看| 一本伊大人香蕉久久网手机| 亚洲性久久久影院| 999久久久免费精品国产| 久久久久无码国产精品不卡| 99精品久久久久久久婷婷| 狠色狠色狠狠色综合久久| 伊人久久五月天| 国产成人久久激情91 | 亚洲色大成网站WWW久久九九| 国产精品久久久久…| 欧美激情精品久久久久久| 国产精品99久久精品| 久久久SS麻豆欧美国产日韩| 99久久精品免费看国产免费| 久久久久免费看成人影片| 波多野结衣久久一区二区| 久久99精品久久久久久水蜜桃| 国产成人无码精品久久久性色| 久久久久成人精品无码| 久久国产精品国产自线拍免费| 国产成人精品综合久久久| 久久久精品久久久久特色影视| 国产国产成人精品久久| 国产午夜福利精品久久2021 | 香蕉久久夜色精品升级完成| 久久久久99精品成人片| 精品久久久久久久久久久久久久久| 久久精品中文无码资源站| 欧美熟妇另类久久久久久不卡 | 久久伊人精品一区二区三区| 999久久久免费国产精品播放| 久久精品9988| 久久精品国产一区| 99久久精品免费国产大片| 久久最近最新中文字幕大全| 久久精品国产99国产精偷| 99久久亚洲综合精品网站|