建立bundle
建立bundle項目,將資源檔(xib,圖片,檔案...)拖進去直接編譯即可.
大坑:直接的iPhone項目是不能建bundle項目的,建一次X-code崩一次,開始以為X-code6怎麼這麼弱,後來才腦殘的發現自己是在iPhone項目上見mac的工程.(貌似可以直接在項目中建mac項目,可是要改一大堆配置云云.. 還是建立一個項目的方便)
note:項目中引用bundle的xib要這樣紫.(loginBundle當然是你建立bundle的名字)
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
NSString * bundlePath = [[ NSBundle mainBundle] pathForResource: @"loginBundle" ofType :@ "bundle"];
NSBundle *resourceBundle = [NSBundle bundleWithPath:bundlePath];
self = [super initWithNibName:@"MXHomeViewController" bundle:resourceBundle];
if (self) {
}
return self;
}
建立靜態庫
建立Cocoa touch Static Library項目,將需要編譯的檔案拖進去(資源檔除外)編譯即可.注意要在真機和模擬器上都編譯一次.真機上產生的.a檔案只能在真機上運行,同樣模擬器上產生的.a檔案只能在模擬器上運行.如果想其又要在模擬器上運行又要在真機上運行,在命令列運行 (當然前提是要進入所在目錄).(啟動並執行時候根據需要選擇debug還是release版本)
lipo -create Debug-iphoneos/liblogin.a Debug-iphonesimulator/liblogin.a -output login.a 指令 真機 檔案名稱 模擬器 檔案名稱 輸出 最終的檔案名稱
大坑:先在模擬器上編譯出的.a檔案是紅色的,不要以為編譯錯了,其實已經編譯完成,真機上編譯就直接是編譯成功黑色的
神坑:不要再把其他項目的二進位檔案編譯進去
天坑:注意庫的引用.如果靜態庫中包含了Category(分類),要在工程檔案中配置OtherLinker Flags為 -Objc .
very importent : 匯入重新編譯的靜態庫時要刪除build 目錄 ,刪除模擬器上程式.因為靜態庫只會載入一次.