iOS開發- 項目配置

來源:互聯網
上載者:User

標籤:配置   開發   模板   結構   ios   

新人指導, 大拿繞道。
旨在說明App建立初期需要完善的一些配置, 有利於之後項目有條進行, 也能減少不必要的開發。

主要內容:

  • 新項目建立
  • 分組結構
  • 設定檔
  • 輔助類
1. 新項目建立

常規的, 我們啟動Xcode開發環境,使用Single View Application Project模板建立一個新項目, 這裡有幾項需要注意下。

1.1 在Class Prefix中填上該項目特有首碼

Class Prefix 欄位將有助於遵循蘋果的編碼指導原則,因為項目中的每個類都需要有個 獨一無二的名字。當建立項目時,能夠使用這個欄位的值定義預設的類名首碼,這個首碼 會在建立新類時使用。儘管蘋果的指導原則建議首碼為三個字元,但我通常使用兩個字元作為首碼..畢竟, 哪有那麼巧的事情。(但是蘋果保留所有二個字元所有權的使用權力)

另外, Xcode6 之後, 建立項目預設是沒有Class Prefix選項, 也沒有.pch檔案。所以我們需要手動來建立。具體步驟如下:

  1. Class Prefix
    , 選中Project, 右側可見Class Prefix, 輸入即可。
  2. .pch檔案
    1. 添加檔案
    2. 設定路徑

1.2 Create Local git Repository for This Project/ Create Git repository on

選中這個選項會建立本地 git 存放庫

當選擇這個選項建立本地 git 存放庫時,Xcode 工具會為你自動建立這個存放庫,使你 能夠在項目中使用版本控制。使用版本控制後,Xcode 會對原始碼的變更保持跟蹤,使你 能夠復原代碼到某個版本,提交變更,比較不同版本之間的代碼差異等。如果你正在使用 基於 SVN(subversion system)的伺服器管理原始碼,那麼可以使用 SVN 用戶端或者 SVN 命 令來管理原始碼,因此不需要本地 git 存放庫。如果你不使用基於 SVN 的伺服器,強烈建 議在建立新項目時選中 Create Local git Repository 這個選項。

2. 分組結構

一個好的實踐是在項目目錄結構中使用分組(group)來組織不同的元素,例如,images、 sounds、classes、views、helpers 等。

請在你的項目中建立如下分組

  • Externals
  • Categories
  • Helpers
  • Definitions
  • Images

:

由於分組僅僅是一個容器,並不是一個存在於檔案系統上的物理檔案夾,因此應該也 在檔案系統的項目根資料夾下建立這些檔案夾。:

或者, 我們可以直接先在根資料夾下建立這寫檔案夾, 然後Add 到項目中即可。

3. 設定檔

iOS開發過程中使用一些常用的宏可以提高開發效率,提高代碼的重用性;
將這些宏放到一個標頭檔裡然後再放到工程中的-Prefix.pch檔案中可直接使用,很方便。

在 Project Explorer 視窗中,導航至 Definitions 這個分組,從操作功能表選擇 New File 選項。建立一個 C 標頭檔,,將其命名為 MyConstants.h。

然後就可以在這裡定義己想要的宏了。
如下是部分我常用的宏:

////  MyConstants.h//  GroupTest////  Created by Colin on 15/1/31.//  Copyright (c) 2015年 icephone. All rights reserved.//#ifndef GroupTest_MyConstants_h#define GroupTest_MyConstants_h//-------------------擷取裝置大小-------------------------//NavBar高度#define NavigationBar_HEIGHT 44//擷取螢幕 寬度、高度#define SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width)#define SCREEN_HEIGHT ([UIScreen mainScreen].bounds.size.height)//-------------------擷取裝置大小-------------------------//----------------------顏色類---------------------------// rgb色彩轉換(16進位->10進位)#define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]//帶有RGBA的顏色設定#define COLOR(R, G, B, A) [UIColor colorWithRed:R/255.0 green:G/255.0 blue:B/255.0 alpha:A]// 擷取RGB顏色#define RGBA(r,g,b,a) [UIColor colorWithRed:r/255.0f green:g/255.0f blue:b/255.0f alpha:a]#define RGB(r,g,b) RGBA(r,g,b,1.0f)//背景色#define BACKGROUND_COLOR [UIColor colorWithRed:242.0/255.0 green:236.0/255.0 blue:231.0/255.0 alpha:1.0]//清除背景色#define CLEARCOLOR [UIColor clearColor]#pragma mark - color functions#define RGBCOLOR(r,g,b) [UIColor colorWithRed:(r)/255.0f green:(g)/255.0f blue:(b)/255.0f alpha:1]#define RGBACOLOR(r,g,b,a) [UIColor colorWithRed:(r)/255.0f green:(g)/255.0f blue:(b)/255.0f alpha:(a)]//----------------------顏色類--------------------------//----------------------系統----------------------------//擷取系統版本#define IOS_VERSION [[[UIDevice currentDevice] systemVersion] floatValue]#define CurrentSystemVersion [[UIDevice currentDevice] systemVersion]//擷取當前語言#define CurrentLanguage ([[NSLocale preferredLanguages] objectAtIndex:0])//判斷是否 Retina屏、裝置是否iphone 5、是否是iPad#define isRetina ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 960), [[UIScreen mainScreen] currentMode].size) : NO)#define iPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO)#define isPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)//判斷是真機還是模擬器#if TARGET_OS_IPHONE//iPhone Device#endif#if TARGET_IPHONE_SIMULATOR//iPhone Simulator#endif//檢查系統版本#define SYSTEM_VERSION_EQUAL_TO(v)                  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)#define SYSTEM_VERSION_GREATER_THAN(v)              ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending)#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)#define SYSTEM_VERSION_LESS_THAN(v)                 ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)#define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v)     ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)//----------------------系統----------------------------#endif

至於如何使用, 之前提到了, 在對應的.pch檔案中, 匯入該標頭檔即可。

如果在.pch這個檔案中匯入標頭檔,那麼它就是全域可用的。

#import <Availability.h>#ifdef __OBJC__   #import <UIKit/UIKit.h>   #import <Foundation/Foundation.h>   #import "MyConstants.h"#endif
4. 輔助類

個人建議, 建立一個複製類, 來實現一些常用的靜態方法。這樣會大大提高開發效率。
比如使用 NSUserDefaults 類讀寫設定項的值。

在 Project Explorer 視窗中,導航至 Helpers 分組,從操作功能表中選擇 File | New 選項。 建立一個新的 Objective-C 類,繼承於 NSObject 類,命名為 MyConfigurationHelper, 如下所示:


然後添加如下代碼:

//MyConfigurationHelper.h

#import <Foundation/Foundation.h>@interface MyConfigurationHelper : NSObject+ (BOOL)getBoolValueForConfigurationKey:(NSString *)_objectkey;+ (NSString *)getStringValueForConfigurationKey:(NSString *)_objectkey;+ (void)setBoolValueForConfigurationKey:(NSString *) _objectkey withValue:(BOOL)_boolvalue;+ (void)setStringValueForConfigurationKey:(NSString *) _objectkey withValue:(NSString *)_value;@end

//MyConfigurationHelper.m

#import "MyConfigurationHelper.h"@implementation MyConfigurationHelper+ (BOOL)getBoolValueForConfigurationKey:(NSString *)_objectkey{    //create an instance of NSUserDefaults    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];    [defaults synchronize];    //let‘s make sure the object is synchronized    return [defaults boolForKey:_objectkey];}+ (NSString *)getStringValueForConfigurationKey:(NSString *)_objectkey{    //create an instance of NSUserDefaults    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];    [defaults synchronize];    //let‘s make sure the object is synchronized    if ([defaults stringForKey:_objectkey] == nil )    {        //I don‘t want a (null) returned        return @"";    }    else    {        return [defaults stringForKey:_objectkey];    }}+ (void)setBoolValueForConfigurationKey:(NSString *)_objectkey withValue:(BOOL)_boolvalue{    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];    [defaults synchronize];    //let‘s make sure the object is synchronized    [defaults setBool:_boolvalue forKey:_objectkey];    [defaults synchronize];//make sure you‘re synchronized again}+ (void)setStringValueForConfigurationKey:(NSString *)_objectkey withValue:(NSString *)_value{    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];    [defaults synchronize];    //let‘s make sure the object is synchronized    [defaults setValue:_value forKey:_objectkey];    [defaults synchronize];    //make sure you‘re synchronized again}@end

MyConfigurationHelper 類包含了一些靜態方法,能夠協助你訪 問 NSUserDefaults 對象。它包含對 NSString 類型的值和 BOOL 類型的值的擷取(get)和設定 (set)的方法,這使操作變得簡單很多。
同樣, 你也可以定義自己的常用方法。

iOS開發- 項目配置

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.