大家讲道理2017-04-17 16:22:33
涉及到了運行時。
除了NSString型別之外,都不允許在方法外部宣告一個『靜態全域常數型別的OC物件』。
你聲明的static const NSArray *imgArr 在'編譯'的時候系統並不知道imgArr是什麼類型,PS:全域常數類型的常數,static const是系統在編譯的時候就需要確定你所定義的常數是什麼類型的,然而OC的物件的類型是在'運行時'確定的。與基本資料型別的決定時間不同,由編譯的時候推到了執行時間(OC支援多態的原因)。
但是NSString除外,NSString是一種特殊的資料類型,有特殊的儲存結構和權限來確保系統能夠辨識。
如果你想再深入理解的話,需要對OC的運行時機制學習學習。