標籤:
概述
在項目開發的過程中,經常使用靜態庫檔案。例如兩個公司之間業務交流,不可能把原始碼都發送給另一個公司,這時候將私密內容打包成靜態庫,別人只能調用介面,而不能知道其中實現的細節。
庫是一些沒有main函數的程式碼集合。除了靜態庫,還有動態連結程式庫,他們之間的區別是:靜態庫可以編譯到我們的執行代碼中,應用程式可以在沒有靜態庫的環境中運行;動態庫不能編譯到我們的執行代碼中,應用程式必須在有連結庫檔案的環境下運行。另外,動態庫在AppStore裡,很有可能被拒絕,上架不了。
因而,一般情況下,我們都是使用.a 靜態庫。
建立靜態庫
1、建立Static Library,建立->Project,選擇Static Library,
2、點擊Next,將Static Library項目名稱命名為TimeDate,用於處理時間和日期的靜態庫工程
建立了靜態庫Static Library項目之後,Xcode自動為我們建立了TimeDate.h/.m檔案,如所示
3、添加功能代碼
TimeDate.h
#import <Foundation/Foundation.h>@interface TimeDate : NSObject-(NSString *)changeToStandardTime:(NSTimeInterval)timeInterval;@end
TimeDate.m
#import "TimeDate.h"@implementation TimeDate- (NSString *)changeToStandardTime:(NSTimeInterval)timeInterval{ NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; NSString *time = [dateFormatter stringFromDate:[NSDate dateWithTimeIntervalSince1970:timeInterval]]; return time;}@end
4、編譯項目,分別為模擬器編譯和真機編譯,產生對應的靜態庫.a檔案
libTimeDate.a->Show in Finder 查看產生的靜態.a檔案
5、把所有的.h標頭檔都公開打包出來
在檔案夾裡,可以看到libTimeDate.a 和 TimeDate.h
靜態庫已經打包完畢
調用實現
建立一個工程,分別把libTimeDate.a 和 TimeDate.h拉到工程裡
調用很簡單
1.引用:#import "TimeDate.h"
2.直接調用
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ NSLog(@"changeToStandardTime---%@",[[[TimeDate alloc]init] changeToStandardTime:1444793824]);}其它資源打包
在某一些靜態庫裡,會使用到圖片和xib檔案等,這些也需要我們一起打包的。
1、打包圖片
建立一個檔案夾,命名和靜態庫一致,如TimeDate.bundle ,顯示包內容,將圖片拉進去即可。
在靜態庫裡使用圖片,就要注意路徑了,一般使用如下:
+(UIImage *)loadImage{ NSString *image=[[NSBundle mainBundle] pathForResource:@"ceshi.png" ofType:nil inDirectory:@"TimeDate.bundle"]; return [UIImage imageWithContentsOfFile:image];}
當然,這一部分是可以寫成一個宏的
最後
我們給對方的,包含
iOS 元件組件-建立靜態庫static library