Objective-c 資料型別
這裡列出Objective-c中獨有資料型別:
一、字串
在Objective-c中,字串常量是由@和一對從引號括起的字串序列。比如:@"China"、@"objective-c"等都是合法的字串常量。
二、id型別id型別是Objective-c中一個比較獨特型別。
在概念上、類似Java中的Object類,可以轉換為任何資料型別。
換句話說,id型別的變數可以存放任何資料型別的物件。
在內部處理上,這種型別被定義為指向物件的指標,實際上是一個指向這種物件的例項變數的指標。
我們可以理解為id型別就是void*型別。但是它們兩個並非完全一樣。下面是id在objc.h中的定義:
- typedefstruct objc_object {
- Class isa;
- }*id;
從上面看出,id是指向struct objc_object的一個指標。也就是說,id是一個指向任何一個繼承了Ojbect(或者NSObject)類的物件。需要注意的是id是一個指標,所以在使用id的時候不需要加星號,比如: id n=nil;
例如:
- id data;
- data = person;
- [data print];
- …
- data = person1;
- [data put];
- …
三、BOOL
在objc.h中,BOOL定義為:
- typedefsignedcharBOOL;
- #define YES (BOOL)1
- #define NO (BOOL)0
從上面的定義,我們可以發現布林變數的值是YES和NO,或0和1.
如:
- BOOL enable=NO;
- enable=0;
- if(enable == YES) …
- if(enable) …
- if(!enable) …
四、SEL
在Objective-c中,SEL是選擇器(selector)的一個型別。
選擇器就是指向方法的一個指標。我們可以理解為程式執行到這裡時就會執行指定的方法。
例如:
- SEL [email protected] (print);
- ClassA *classA = [[ClassA alloc]init];
- ClassB *classB = [[ClassB alloc]init];
- [classA performSelector:sel withObject:nil];
- [classB performSelector:sel withObject:nil];
- SEL [email protected] (print:);
- SEL [email protected] (print:age:);
在上例中sel是指向print方法的指標,沒有指定它是屬於哪個類。因此,不同的類中都有print方法時可以呼叫上面的形式進行呼叫。
我們可以將SEL理解為函式指標,但它們之間並非完全一樣。
五、Class
與Java類似,你可以使用Class類來獲得一個物件所屬的類。如:
Class theClass = [theObject class]; //獲得theObject物件的class資訊
NSLog(@"類名是:%s",[theClass className]); //theObject物件的類名
Class類有幾個常用的方法,如判斷某個物件是否為某個類(包含子類)的物件:
if( [theObject isKindOfClass:[Member class]]) {…}
如果不想包含子類,就可以使用:
if( [theObject isMemberOfClass:[Member class]] {…}
六、nil和Nil
nil與C語言的NULL相同。在objc/objc.h中定義如下:#define nil 0 /* id of Nil instance */
Nil與nil有點不一樣,Nil定義一個指向空的類(是Class,而不是物件)。具體定義如下:
#define Nil 0 /* id of Nil class */
如:
- ClassA *classA = [[ClassA alloc]init];
- classA = nil
- id data;
- data=nil;
相關推薦
Objective-c 資料型別
這裡列出Objective-c中獨有資料型別: 一、字串 在Objective-c中,字串常量是由@和一對從引號括起的字串序列。比如:@"China"、@"objective-c"等都是合法的字串常量。 二、id型別 id型別是Objective-c中一個
Objective-C資料型別
一、 資料型別Obj-C是C語言的超集,之前我們都知道了,所以Obj-C中的資料型別分為兩種:一種是基於C語言的基本資料型別;另一種是Obj-C特殊的資料型別。1. C語言基本資料型別Obj-C基於C語言的基本資料型別有:int,float,double和char,那麼
Objective-C資料型別和表示式
4.1資料型別和常量 Objective-C提供了4中基本的資料型別:int 、float、double、char 。 Objective-C中,任何數字,單個字元或者字串通常成為常量。 在程式碼清單4-1中使用了基本的Objective-C資料型別#import <
C# 資料型別轉換 顯式轉型、隱式轉型、強制轉型
C# 的型別轉換有 顯式轉型 和 隱式轉型 兩種方式。 顯式轉型:有可能引發異常、精確度丟失及其他問題的轉換方式。需要使用手段進行轉換操作。 隱式轉型:不會改變原有資料精確度、引發異常,不會發生任何問題的轉換方式。由系統自動轉換。 不同型別的資料進行操作(加減乘除賦值等等),是需要
.NET基礎之C#資料型別
(一)列舉變數 [public] enum 列舉名 { 值1, 值2, 值3, ...... } 例: public enum Gender { 男, 女 } //使用列舉變數 Gender sex = Gender.男; public:訪問修飾符 enum:宣告
C++資料型別
TCHAR 因為C++支援兩種字串,即常規的ANSI編碼(使用"“包裹)和Unicode編碼(使用L”“包裹),這樣對應的就有了兩套字串處理函式,比如:strlen和wcslen,分別用於處理兩種字串。 微軟將這兩套字符集及其操作進行了統一,通過條件編譯(通過_UNICODE和UNICO
C#資料型別轉換之string到int型陣列
已知: string str = "1,2,3,4,5" 問: 如何根據上述字串產生一個int[]陣列?(int[] intLst = {1,2,3,4,5}) 答: 首先:string strLst = str.Split( ',' ) 然後:int[] int
C# 資料型別轉換 顯式轉型、隱式轉型、強制轉型
C# 的型別轉換有 顯式轉型 和 隱式轉型 兩種方式。 顯式轉型:有可能引發異常、精確度丟失及其他問題的轉換方式。需要使用手段進行轉換操作。 隱式轉型:不會改變原有資料精確度、引發異常,不會發生任何問題的轉換方式。由系統自動轉換。 不同型別的資料進行操作(加減乘除賦值等等),是需要進行 型別轉換 後,才能繼
OO_W2:C#資料型別和C語言有什麼不同?
OO_W2_Question:(9月15日—9月21日) C#資料型別和C語言有什麼不同?OO_W2_Answer: 討論中……ps: 請大家注意,9月21日後的回覆將不作計分。
C#與C++資料型別比較及結構體轉換
//c++:HANDLE(void *) —- c#:System.IntPtr //c++:Byte(unsigned char) —- c#:Sy
QT與C++資料型別轉換
Qt的資料型別與標準c++是不一樣的,在開發的時候,必然會涉及到很多資料型別的轉換。早已厭倦了百度QString轉QByteArray,QByteArray轉char*,QString轉string…。Qt的第一篇文章,就先來總結一下我用過的資料之間的轉換。 1、QString轉QByt
c#資料型別/變數/常量/計算機資料儲存(進位制之間的相互轉化)
一c#資料型別 注:值型別:值直接儲存在堆疊中(儲存空間小,呼叫速度快); 引用型別:值儲存在堆中(儲存空間大,呼叫速度慢) 1.值型別 a. 值型別變數可以直接分配給一個值.它們是從類System.ValueType中派生的. b.值型別直接儲存其值. c.值型別的例項通常是線上程棧上
跨平臺C/C++資料型別定義
1 需考慮問題1.1 編譯器執行作業系統 l WINDOWS : _WIN32、WIN32; l UNIX/LINUX: unix、__unix、__unix__; l SunOS/SOLARIS: _
C 資料型別
C 資料型別 在 C 語言中,資料型別指的是用於宣告不同型別的變數或函式的一個廣泛的系統。變數的型別決定了變數儲存佔用的空間,以及如何解釋儲存的位模式。 C 中的型別可分為以下幾種: 序號 型別與描述 1 基
c++:資料型別和運算子(與c語言的不同)
c++的標頭檔案與c語言的不同:c++增加的資料型別:結構體的區別:強制型別轉換:c語言需要括號+轉換型別來轉換;c++不需要括號,直接型別(引數),類似於函式的引數傳遞;動態分配記憶體空間:p3=ne
C++與C#資料型別對應關係總結
API與C#的資料型別對應關係表 API資料型別 型別描述 C#型別 API資料型別 型別描述 C#型別 WORD 16位無符號整數 ushort CHAR 字元 char LONG 32位無符號整數 int DWORDLONG 64位
C++ 資料型別;變數型別及其作用域。 ---day1
此篇部落格來自http://www.runoob.com/cplusplus/cpp-variable-scope.html 感謝!!! C++ 資料型別 使用程式語言進行程式設計時,需要用到各種變數來儲存各種資訊。變數保留的是它所儲存的值的記憶體位置。這意味著,當您建立一個變
c# - 資料型別之值型別,引用型別
c#資料型別分為值型別(Value types),引用型別(Reference types),以及指標型別(Pointer types),而指標型別只在不安全的程式碼中使用,本文不討論指標型別。 值型別的引用的本質是拷貝(copy),是創造一個新的記憶體單元來儲存,新記憶體單元
dev c++ 資料型別的範圍
環境: Dev-C++ 4.9.6.0 (gcc/mingw32), 使用-Wall編譯選項 基本型別包括位元組型(char)、整型(int)和浮點型(float/double)。定義基本型別變數時,可以使用符號屬性signed、unsigned(對於char、int),和長度屬性short、long(對
C資料型別的長度
本人最近看到了一種資料型別叫long long,很好奇它的長度和其他型別的區別,方便日後查閱,這裡整理一下C的資料型別: Type Bytes in Win32(64) Valu