1. 程式人生 > >接手OC專案遇到的一些坑

接手OC專案遇到的一些坑

1、把所有類的標頭檔案都#import到pch檔案中,造成編譯時間超級長

pch檔案的作用:

存放一些全域性的巨集(整個專案中都用得上的巨集)
用來包含一些全部的標頭檔案(整個專案中都用得上的標頭檔案)
能自動開啟或者關閉日誌輸出功能等等

2、圖片管理不使用xcode的圖片資源管理器(Assets.xcassets),而另建立工程資料夾放圖片。

2.1、Assets.xcassets資料夾的作用:

1、自動識別@2x,@3x圖片;
2、根據不同的裝置,不同的解析度設定相應的圖片;
3、可以對圖片進行剪裁和拉伸處理;
4、可以對圖片進行記憶體快取,系統進行管理

當我們用imageName:方法載入圖片時,如果是從Assets.xcassets載入圖片時,就不用寫圖片名的副檔名。而如果是從專案的目錄下載入圖片,就必須寫全圖片的副檔名。另外,Assets.xcassets中的圖片是不能通過imageWithContentsOfFile:來載入

2.2、imageWithContentsOfFile方法的作用

直接把Bundle下的圖片載入顯示,如果物件銷燬,圖片資料也會被清理。

3、通知名全部用常量字串,不定義全域性變數。

由於通知是”一對多”的關係,它可以向其它任何不關的物件傳送通知去處理一些事件。所以我們要對通知名進行統一的管理,避免程式裡通知重名,導致程式執行不正常。

常用的解決辦法是:設定全域性的通知名常量。

通知名稱的格式:字首 + 主體 + Did\Will + 動詞 + notification

.h檔案

#import <UIKit/UIKit.h>
/** 發出重新整理抽獎web的通知 **/
UIKIT_EXTERN NSString * const ZMLoginBackDidRefreshLuckWebNotification;

.m檔案

#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
/** 重新整理抽獎web的通知 **/
NSString * const ZMLoginBackDidRefreshLuckWebNotification = @"ZMLoginBackDidRefreshLuckWebNotification";

4、不用cocoapods管理第三方框架

由於ios系統的升級速度比較快,所以我們最好用cocoapods管理第三方框架,這樣可以實時的管理框架,同時也可以避免用git管理第三方庫時提交不必要的程式碼。

5、把所有的url字串都放在pch中#define

看第一條pch檔案真正的作用就知道了。