iOS面试题整理---关键字!!!
關(guān)鍵字整理
?static
1.static全局變量與普通的全局變量有什么區(qū)別?
全局變量(外部變量)的說(shuō)明之前再冠以static 就構(gòu)成了靜態(tài)的全局變量。全局變量本身就是靜態(tài)存儲(chǔ)方式, 靜態(tài)全局變量當(dāng)然也是靜態(tài)存儲(chǔ)方式。 這兩者在存儲(chǔ)方式上并無(wú)不同。
2.static局部變量和普通局部變量有什么區(qū)別?
static關(guān)鍵字修飾局部變量時(shí)只被初始化一次,在程序中只有一份內(nèi)存。static關(guān)鍵字可延長(zhǎng)局部變量的生命周期,直到程序結(jié)束才銷(xiāo)毀。
3.static函數(shù)與普通函數(shù)有什么區(qū)別?
static函數(shù)與普通函數(shù)作用域不同,僅在本文件。只在當(dāng)前源文件中使用的函數(shù)應(yīng)該說(shuō)明為內(nèi)部函數(shù)(static),內(nèi)部函數(shù)應(yīng)該在當(dāng)前源文件中說(shuō)明和定義。對(duì)于可在當(dāng)前源文件以外使用的函數(shù),應(yīng)該在一個(gè)頭文件中說(shuō)明,要使用這些函數(shù)的源文件要包含這個(gè)頭文件。
static函數(shù)在內(nèi)存中只有一份,普通函數(shù)在每個(gè)被調(diào)用中維持一份拷貝
?
const
當(dāng)我們想全局共用一些數(shù)據(jù)時(shí),可以用宏、變量、常量宏:#define HSCoder @"漢斯哈哈哈"
變量:NSString *HSCoder = @"漢斯哈哈哈";
常量:四種寫(xiě)法:static const NSString *HSCoder = @"漢斯哈哈哈";const NSString *HSCoder = @"漢斯哈哈哈";NSString const *HSCoder = @"漢斯哈哈哈";NSString * const HSCoder = @"漢斯哈哈哈";
const修飾位置不同,代表什么?
1.const NSString *HSCoder = @"漢斯哈哈哈";
2.NSString const *HSCoder = @"漢斯哈哈哈";
3.NSString * const HSCoder = @"漢斯哈哈哈";
1.const NSString *HSCoder = @"漢斯哈哈哈";
"*HSCoder"不能被修改, "HSCoder"能被修改
2.NSString const *HSCoder = @"漢斯哈哈哈";
"*HSCoder"不能被修改, "HSCoder"能被修改
3.NSString * const HSCoder = @"漢斯哈哈哈";
"HSCoder"不能被修改,"*HSCoder"能被修改
注意:1和2其實(shí)沒(méi)什么區(qū)別
結(jié)論:const右邊的總不能被修改 思考:宏與常/變量的選擇?
宏:只是在預(yù)處理器里進(jìn)行文本替換,沒(méi)有類型,不做任何類型檢查,編譯器可以對(duì)相同的字符串進(jìn)行優(yōu)化。只保存一份到 .rodata 段。甚至有相同后綴的字符串也可以優(yōu)化,你可以用GCC 編譯測(cè)試,"Hello world" 與 "world" 兩個(gè)字符串,只存儲(chǔ)前面一個(gè)。取的時(shí)候只需要給前面和中間的地址,如果是整形、浮點(diǎn)型會(huì)有多份拷貝,但這些數(shù)寫(xiě)在指令中。占的只是代碼段而已,大量用宏會(huì)導(dǎo)致二進(jìn)制文件變大
變量:共享一塊內(nèi)存空間,就算項(xiàng)目中N處用到,也不會(huì)分配N(xiāo)塊內(nèi)存空間,可以被修改,在編譯階段會(huì)執(zhí)行類型檢查
常量:共享一塊內(nèi)存空間,就算項(xiàng)目中N處用到,也不會(huì)分配N(xiāo)塊內(nèi)存空間,可以根據(jù)const修飾的位置設(shè)定能否修改,在編譯階段會(huì)執(zhí)行類型檢查
?
extern
這個(gè)單詞翻譯過(guò)來(lái)是“外面的、外部的”。顧名思義,它的作用是聲明外部全局變量。這里需要特別注意extern只能聲明,不能用于實(shí)現(xiàn)。
//在開(kāi)發(fā)中,我們通常會(huì)單獨(dú)抽一個(gè)類來(lái)管理一些全局的變量或常量,下面來(lái)看看逼格比較高的一種做法:
//我們可以在.h文件中extern聲明一些全局的常量
//聲明一些全局常量
extern NSString * const name;
extern NSInteger const count;
//然后在.m文件中去實(shí)現(xiàn)
//實(shí)現(xiàn)
NSString * const name = @"王五";
NSInteger const count = 3;
?
@dynamic和@synthesize
?
?
?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/1-434/p/10488658.html
總結(jié)
以上是生活随笔為你收集整理的iOS面试题整理---关键字!!!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 个性签名生活感悟人生
- 下一篇: HDU-1459.非常可乐(BFS )