2013-12-13 23 views
1

這是我的第一個問題,我覺得自己不能找到答案,因爲我非常懷疑像這樣的答案已經得到了回答,但我的谷歌已經失敗了我。如何創建特定於我的需求的新iOS框架?

我想要做的是製作一個框架,我可以添加到我的應用程序中,以便我可以從構建的每個類訪問結構。例如,CGRect可以從我構建的任何類訪問,因爲(我認爲)每個類都包含Foundation Framework,或者當我創建視圖控制器時,我可以使用UIButtons,因爲它們位於UIKit框架中,基礎框架和CoreGraphics框架。

我想要一個文件,我可以堅持結構或自定義對象,我會感興趣一次又一次地使用。即CGPoint從CoreGraphics在框架:

struct CGPoint { 
    CGFloat x; 
    CGFloat y; 
}; 
typedef struct CGPoint CGPoint; 

我想要一個框架在那裏我可以像一個月添加東西的typedef

typedef enum { 
    Jan = 1, 
    Feb = 2, 
    Mar = 3, 
    Apr = 4, 
    May = 5, 
    Jun = 6, 
    Jul = 7, 
    Aug = 8, 
    Sep = 9, 
    Oct = 10, 
    Nov = 11, 
    Dec = 12, 
} SSMonth; 

我想用C我會做到這一點的方法是通過創建一個頭文件,並在所有使用上述SSMonth示例的其他文件中包含此頭文件。對於iOS項目來說,以類似的方式實現這個目標會更好嗎,還是創建一個框架是更好的方法?假設我想將它擴展到結構和類型定義之外,並希望包含實際的類;答案會是一樣的嗎?

+1

這似乎是一個沉重的任務。我確定已經有一個工具了。你試過什麼樣的google-fu?有些問題很難用谷歌的方式提出來。 (谷歌圖像矛和得到一個流行歌星比武器...) – Plasmarob

+0

如果你想建立一個靜態庫,這[教程](http://www.raywenderlich.com/41377/creating-a-static-library -in-ios-tutorial)可能會有所幫助(儘管可能是過度使用) –

+0

非常感謝鏈接建議,Rich Tolley!在這個階段它是過分的,但我已經收藏了這個鏈接,所以我可以在未來擴展到這個。 Plasmarob,當談到編程時我完全自學(知道幾種語言!),所以我的google-fu一般很擅長查找內容。現在我知道我正在尋找「靜態庫」的關鍵術語,我希望能夠找到更多的教程和文檔。 –

回答

3

您可以將文件添加到AppName-Prefix.pch文件

// 
// Prefix header 
// 
// The contents of this file are implicitly included at the beginning of every source file. 
// 

#import <Availability.h> 

#ifndef __IPHONE_5_0 
#warning "This project uses features only available in iOS SDK 5.0 and later." 
#endif 

#ifdef __OBJC__ 
    #import <UIKit/UIKit.h> 
    #import <Foundation/Foundation.h> 
    #import "CustomClass.h" 
#endif 

然後在CustomClass把你希望能夠訪問的對象。

+1

說我編輯AppName-Prefix.pch文件以包含BBStructs.h。我是否必須返回並編輯所有現有的必須包含BBStructs.h的類,或者因編譯順序而不必要? –

+0

http://stackoverflow.com/questions/6462288/why-do-xcode-templates-have-imports-that-duplicate-prefix-pch –

+0

Riomhaire,你回答我的問題herzbube下面。謝謝! –

3

我想在Riomhaire的答案上擴充一點:他所說的文件是一個預編譯的頭文件(擴展名.pch是首字母縮寫詞)。預編譯的頭文件是由編譯器在你的項目構建的開始只處理一次,然後它們會自動導入到項目中的所有其他文件,而您不必明確寫入

#import "Prefix.pch" 

預編譯頭的主要目的文件是他們加快了項目的編譯時間,因爲編譯器不需要一遍又一遍地處理相同的 - 可能是大的頭文件。事實上,你無需在任何地方顯式導入.pch文件,這只是Xcode爲你提供的便利。在其他編程環境中(例如Microsoft Visual Studio),您可能仍需要顯式包含預編譯頭文件。

Google對於「預編譯頭文件」瞭解更多關於這個概念的知識(不限於Objective-C)。作爲快捷方式,這裏是the Wikipedia article的鏈接。

+0

非常感謝,herzbube!這實際上提出了一個問題。如果它是一個預編譯的頭文件,那麼爲什麼Xcode會導入與我創建新的viewcontroller時編譯的.pch文件相同的東西? 即.pch文件有 #import 當我創建一個新的視圖控制器時,它也有 #import 。你能否就冗餘原因提供一些見解? –

+0

@BradB。爲了省掉導入語句,Xcode將不得不檢查1)你的項目是否有預編譯的頭文件(你不需要有頭文件); 2)該文件是否包含「UIKit.h」導入。只需添加import語句,然後讓您決定是否要刪除該語句就簡單多了。你可以說這可能是一個「比安全感更好」的例子:-) – herzbube