首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

NSUInteger 非類別型別,變數宣告勿加星號

     編輯:程式設計綜合問答

初學 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\";
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved