標籤:
項目目錄簡單解析:
1、AFNetwork --- 通用網路程式庫
2、GCDiscreetNotificationView --- 頂部彈出並會自動消失的通知欄
3、Thread --- 後台線程對象,處理後台發送帶圖片的動彈
4、SoftwareGroup --- 所有軟體索引頁以及軟體分組頁
5、Friends --- 好友名單頁,包括粉絲與粉絲
6、Search --- 搜尋網頁
7、Favorite --- 收藏頁
8、MBHUD --- 載入提示控制項
9、FTColor --- 富文本顯示控制項
10、EGOImageLoading --- 非同步影像控制
11、User --- 其他使用者個人專頁以及登陸使用者專頁
12、Comment --- 評論列表頁以及發表評論頁
13、AsyncImg --- 非同步影像控制,總要用於列表中帳戶圖片載入
14、Setting --- 登入,登出以及關於我們
15、Profile --- 動態網頁,發表留言,以及對話氣泡
16、News --- 新聞,問答的列表以及所有類型的文章詳情頁
17、Tweet --- 動彈列表,發表動彈以及動彈詳情
18、Helper --- 項目輔助類
19、TBXML --- xml解析,還原序列化所有API返回的XML字串
20、ASIHttp --- 另一種網路程式庫,負責使用者登陸以及發送帶圖片的動彈
21、Model --- 項目所有的實體物件
22、Resource --- 項目資源
Model 目錄的子物件:
Model
├ Tweet 動彈列表單元,也用於動彈詳情
├ News 新聞列表單元
├ Post 問答列表單元
├ Message 留言列表單元
├ Activity 動態列表單元
├ Config 程式配置設定
├ SingleNews 新聞詳情
├ SinglePostDetail 問答詳情
└ Comment 評論列表單元
└ Software 軟體詳情
└ Blog 部落格詳情
└ Favorite 收藏列表單元
└ SearchResult 搜尋結果列表單元
└ Friend 好友名單單元
└ SoftwareCatalog 軟體分類列表單元
└ SoftwareUnit 軟體列表單元
└ BlogUnit 部落格列表單元
項目的功能流程1、APP啟動流程
OSAppDelegate 的啟動方法中,聲明一個 UITabBarController,然後依次將
NewsBase
PostBase
TweetBase2
ProfileBase
SettingView
填充到5個UITabItem裡
2、ipa檔案產生流程
1,在OSX系統上啟動iTunes程式
2,啟動Xcode,將項目中的 OSChina/Products/oschina.app 按住command鍵然後用滑鼠拖放到iTunes的應用程式欄目
3,然後在iTunes程式中右鍵點擊"開源中國"表徵圖,在彈出的的菜單中選擇"在Finder中顯示",這樣你就看到ipa檔案的路徑了。
當我們建立一個工程的時候,在Supporting FIles檔案下會看到一個以 -Prefix.pch結尾檔案的檔案,pch全稱是“precompiled header”,也就是先行編譯標頭檔,該檔案裡存放的工程中一些不常被修改的代碼,比如常用的架構標頭檔,這樣做的目的提高編譯器編譯速度。我們知道當我們修改一個工程中某個檔案代碼時候,編譯器並不是重新編譯所有所有檔案,而是編譯改動過檔案的,假如pch中某個檔案修改了,那麼pch整個檔案裡包含的的其他檔案也會重新編譯一次,這樣就會消耗大量時間,所以它裡面添加的檔案最好是是很少變動或不變動的標頭檔或者是先行編譯的程式碼片段;
然後就剩下最後面的
[cpp] view plaincopy
- #ifdef DEBUG
- #define debugLog(...) NSLog(__VA_ARGS__)
- #define debugMethod() NSLog(@"%s", __func__)
- #else
- #define debugLog(...)
- #define debugMethod()
- #endif
工程有Debug Version和Release Version,Debug Version是程式開發過程中版本,它包含了所有調試資訊,一些常用的NSLog列印日誌,在程式調試過程工根據我們設定的調試資訊可以看出什麼地方出錯,我們在運行運行一個小程式的時候,會不會首先就想到進行斷點調試呢,應該是首先想著NSLog一下,看看哪個函數方法沒執行,看看是不是哪個數組的值沒取出來。Release Version是發布版本,不列印NSLog可以加快程式運行速度,減少記憶體使用量。 但是到一個大工程中,會有很多很多這樣的NSLog,在我們工程完美啟動並執行時候,發布Release 版本的時候,難道我們去一行行的注釋調NSLog嗎?假如工程現在原來基礎上發布一個version 1.2版本的,我們在修改程式的時候豈不是還把原來注釋給取消,那就很麻煩很麻煩了。
所以,此處用到了巨集指令
上段代碼的意思就是 用巨集指令做一個判斷,如果DEBUG為真,則編譯#ifdef到#endif宏定義,否則編譯器就不編譯;
這個DEBUG在哪設定呢,
在 "Target > Build Settings > Preprocessor Macros > Debug" 裡有一個"DEBUG=1"。
現在我們來做一個測試:
取一個巨集指令放到OSAppDelegate.m的application:didFinishLaunchingWithOptions:方法中,並用同一個NSLog做一個對比;
NSLog(@"%s", __func__);
debugMethod();
首先設定為Debug模式下,Product-->Edit Scheme
跳轉到這個介面
當我設定Build Configuration成Debug時,列印
當我設定Build Configuration成Release的,列印時
當Run Test Profile Analyze Archive的時候,都可以根據需要設定Debug和Release兩個模式運行;
所以我們完全可以用一個巨集指令來設定是否列印調試資訊;
歡迎轉載分享,請註明出處http://blog.csdn.net/duxinfeng2010
開源中國iOS用戶端學習(1)