指針常量extern NSString * const


注意到,在使用NSNotificationCenter的時候,會需要聲明字符串常量,作為NSNotificationCenter的name。這時,const的位置就比較重要,很容易讓不了解的人犯錯誤:

錯誤的寫法(常量指針):

extern const NSString * RNFooDidCompleteNotification;

正確的寫法(指針常量):

extern NSString * const RNFooDidCompleteNotification;

這里涉及到常量指針和指針常量的概念,簡單的來說:

  • 常量指針:就是指向常量的指針,關鍵字 const 出現在 * 左邊,表示指針所指向的地址的內容是不可修改的,但指針自身可變。
  • 指針常量:指針自身是一個常量,關鍵字 const 出現在 * 右邊,表示指針自身不可變,但其指向的地址的內容是可以被修改的。

在此例中:我們知道,NSString永遠是immutable的,也是一個指針常量,所以NSString * const 是有效的,而const NSString * 則是無效的。而使用錯誤的寫法,則無法阻止修改該指針指向的地址,使得本應該是常量的值能被修改,造成了隱患。這是需要注意的一個常見錯誤。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM