初學 Objective-C 時常見錯誤:將 NSUInteger 當成物件指標宣告,導致編譯錯誤「無效的二元運算」。
NSUInteger *hoeveelChars = [eersteDertigTek length] - 30; // 錯誤:加了 * 變成指標
substringFromIndex:[eersteDertigTek length] - hoeveelChars] // 編譯錯誤
NSUInteger hoeveelChars = [eersteDertigTek length] - 30; // 無星號,基本資料型別
NSString *sub = [eersteDertigTek substringFromIndex:hoeveelChars];
NSUInteger 是 typedef unsigned long NSUInteger;(64 位元環境)或 unsigned int(32 位元),屬於純量型別,非物件。NSInteger, CGFloat, BOOL, int, float 等皆為純量型別,宣告時不加星號。NSObject)才需指標宣告:NSString *str, NSArray *arr。| 型別 | 分類 | 宣告範例 |
|---|---|---|
| NSUInteger / NSInteger | 純量 | NSUInteger count = 10; |
| CGFloat | 純量 | CGFloat width = 100.0f; |
| BOOL | 純量 | BOOL flag = YES; |
| NSString / NSArray / NSDictionary | 物件 | NSString *text = @\"Hello\"; |