2016-09-24 27 views
2

這裏是一些全局常量和變量聲明,所以我想知道是否這些類型的初始化屬性總是留在內存中? 還是這些計算的屬性,每次我訪問它們時,創建一個新的實例,並且一旦其引用超出範圍就會丟失?全局變量是否總是停留在內存中..?

let storyboard      = UIStoryboard(name: "Main", bundle: nil) 
let APPDELEGATE      = UIApplication.sharedApplication().delegate as! AppDelegate 
var mainNavigationController  : UINavigationController? 
var slideMenuNavigationController : UINavigationController? 
let clientIDInstagrm    = "favf5" 
var selectPhotoCount    = 0 


//URL 
let BASE_URL_FOR_ALBUM   = "http://admin.com/" 
let BASE_URL      = "http://admin.com" 



//SIGN UP KEYS 
let kNAME   = "name" 
let kEMAIL   = "email" 
let kPASS   = "password" 
let kAPP_KEY  = "appkey" 
let kDEVICE_TOKEN = "device_token" 
let kDEVICE_TYPE = "device_type" 
let kServiceMethod = "method" 
let kSocialType  = "social_type" 
let kSocial_id  = "social_id" 
let kMethod   = "method" 

//KEYS RESPONSE 
let kERROR_CODE  = "error_code" 
let kUSER_DETAIL = "User_details" 
let kUSERNAME  = "username" 
let kIS_SELECTED = "SELECTED" 

//BOOK PAGES KEYS 
let kTEMPLATE_TYPE = "templateType" 
let kIMAGE_1  = "img1" 
let kIMAGE_2  = "img2" 
let kIMAGE_3  = "img3" 
let kRightSidePage = "RightSidePage" 

回答

4

全局變量總是在內存中,直到它們被釋放並根據它們的作用域工作,無論它們存在於某個塊中還是整個類都可見,但爲了保持引用(創建新實例),您需要了解靜態變量的概念。

靜態變量:是分配給程序整個生命週期的變量。 static變量的值在所有函數/方法調用中保持不變。 當在函數外面聲明時,靜態變量對聲明的文件中的所有內容都是可見的,當在函數或方法中聲明時,它只在該函數或方法內可見,但該值在調用之間保留。

Exapmle:

int method(void) 
{ 
    int i = 5; 
    i += 10; 
    return i; 
} 

以下方法返回15時,每次呼叫,但如果你把變量i static見下文。

int method(void) 
{ 
    static int i = 5; 
    i += 10; 
    return i; 
} 

這裏每次調用方法都會返回15,25,35等等,因爲變量i保留了以前的調用引用。

static用於控制變量單位中變量的可見性的變量用法。所以,如果你想只允許某些變量文件中進行訪問,就像Ç,您可以創建他們喜歡:

static NSString *s = [[NSString alloc] initWithString:@"Hello"]; 

這可能會提高內存泄漏。

編輯:

爲了decleare常數是可見的整個應用程序聲明爲在頭extern,並在定義它們。L:

//.h 
extern NSString *const yourVariableNameKey; 

//.m 
NSString *const yourVariableNameKey = @"some value"; 

符號常量就像Ç

// declare them where you write import statement 
// to access just import the class where you dec those variables and access by name 

#define variable_1 @"string value" 
#define variable_2 10 // int value 

編輯2:

在迅速

struct Constants { 
    static let someNotification = "TEST" 
} 

然後在你的代碼中調用它像這樣:

print(Constants.someNotification) 
+0

聲明常量的正確方法是什麼? 我想聲明整個應用程序中可見的常量,但是當我訪問它們時,它們將獲得內存。 –

+0

什麼是快捷方式? –

+0

薩爾曼檢查我的第二次編輯更新和.. – vaibhav

-1

這總是在內存中。

東西不相關的回答

你應該儘量避免全局變量,因爲一切都使你的內存高是對你不好應用。所有可以減少內存的東西都應該集中。

相關問題