文章出處

const

const最好理解,修飾的東西不能被修改
指針類型根據位置的不同可以理解成3種情況:

I 常量指針

// 初始化之后不能賦值,指向的對象可以是任意對象,對象可變。
NSString * const pt1;
 

II 指向常量的指針

// 初始化之后可以賦值,即指向別的常量,指針本身的值可以修改,指向的值不能修改
const NSString * pt2;
 

III 指向常量的常量指針

const NSString *  const pt3;
 

extern

等同于c,全局變量的定義
//x .h 聲明
extern const NSString * AA;
 
//x .m 定義
const NSString * AA = @"abc";
 
// 調用
#import "x.h"
或者再次申明
extern const NSString * AA;

static

等同于c,將變量的作用域限定于本文件?
不同于java C++里面的類變量,oc沒有類變量
 

疑問

 

[cpp] view plaincopy
 
  1. static const NSString * const ChatWindow_STR_TITLE_INDEX[] = {  
  2.     @"msg_type_all",   
  3.     @"msg_type_area",   
  4.     @"msg_type_PM",   
  5.     @"msg_type_team",  
  6.     @"guild_title",  
  7.     @"msg_type_system",  
  8.     @"msg_type_world"  
  9. };  

我在.h文件里定義一個static變量,

 

I .h初始化

在不同的.m里調用都有值,這些值是否同一個對象?

【不同的對象】

II .m里初始化(or賦值)

初始化的值只在.m文件里有效果,即等同于c,將變量的作用域限定于本文件

其他.m文件調用的值都沒有賦值。

【不同的對象】

 

結論

static

    // static變量屬于本類,不同的類對應的是不同的對象

 

    // static變量同一個類所有對象中共享,只初始化一次

const

    // static const變量同static的結論I,只是不能修改了,但是還是不同的對象

    // extern const變量只有一個對象,標準的常量的定義方法

    // extern的意思就是這個變量已經定義了,你只負責用就行了

 

 http://blog.csdn.net/xpwang168/article/details/8087143

 

文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()