在IOS項目中使用常量

來源:互聯網
上載者:User

objc不像java,有靜態常量。比如:

public static final RADIAS=180;

目前我的做法是,使用c的預先處理#define。比如,在標頭檔中:

#define MIN_VELOCITY 10 
#define LOOP_COUNT 100

@interface AnimationView : UIView <UIGestureRecognizerDelegate>{

在代碼中使用:

if (data.panLocation.x<MIN_X) { 
    data.panLocation.x=MIN_X; 
}

這些預定義常量,會在編譯器編譯的時候用define中定義的字串替代。

——————————————————————————————————————————————————————————

在objc項目中使用常量的最佳實務

之前,在在objc項目中使用常量中,使用c的預先處理#define來設定常量。比如,可以做個標頭檔,然後在需要的類檔案中import,使用常量。

但這不是最佳實務。這樣做可能是最好的方式,首先在比如叫Constants.h的標頭檔中:

#import <Foundation/Foundation.h>

extern NSString * const kInitURL;

@interface Constants : NSObject {

}

@end

這裡使用到extern c關鍵字,表示這個變數已經聲明,只是引用。const關鍵字表示變數是常量,不可修改。

在objc的約定裡,常量也是大小寫混排的駝峰命名規則,首字母小寫,另外,第一個字母是k。

然後,在Constants.m檔案中:

#import "Constants.h"

NSString * const kInitURL = @"http://marshal.easymorse.com";

@implementation Constants

@end

 

在這裡給常量kInitURL賦值。

如何使用常量?只需在所需的m檔案引入Constants標頭檔,下面是使用樣本:

#import "BasicDemosViewController.h" 
#import "Constants.h"

@implementation BasicDemosViewController

// Implement loadView to create a view hierarchy programmatically, without using a nib. 
- (void)loadView { 
    NSLog(@"load view: %@",kInitURL); 
}

使用這種方式,比通過宏預定義的優點是,可以對常量進行指標比較操作,這是#define做不到的。即:

[myURL isEqualToString:kInitURL];


————————————————————————————————————————————————

objc檔案內部的常量

在在objc項目中使用常量的最佳實務中的常量,是指可用於全域的常量。如果只是在檔案內部使用,不希望之外的地方能訪問到,就需要:

#import "BasicDemosViewController.h" 
#import "Constants.h"

NSString * const kMyURL=@"http://marshal.easymorse.com";

@implementation BasicDemosViewController

// Implement loadView to create a view hierarchy programmatically, without using a nib. 
- (void)loadView { 
    NSLog(@"load view: %@, %@",kInitURL,kMyURL); 
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.