Objective-C之資料型別
一概述:
Objective-C是在C語言基礎上拓展出的新語言,所以它是能相容C語言程式碼的,C語言中的基本資料型別如int、float、double和char在Objective-C中是完全可以正常使用的。除此之外,Objective-C還拓展了一些新的資料型別如BOOL、id、instancetype等。
二.新特性的介紹:
1.BOOL型別介紹:
1.開啟Xcode,建立一個Objcetivie-C專案.
2.匯入,檢視官方文件:
#include <objc/objc.h>
所以說,在 iOS 的64位系統或者在Apple Watch 上,Objective-C 的 BOOL 直接等於定義在 stdbool.h 檔案裡頭
但是,如果是在 MacOS(我們現在開發都在這) 或者 32位系統的 iOS ,BOOL會被定義成一個 signed char,
而 BOOL 與 bool,就分別是一個 byte 或者是 四個 bytes 的差別。
官方文件:
Objective-C中的BOOL實際上是:
一種對帶符號的字元型別(signed char)的型別定義(typedef),它使用8位的儲存空間。
通過#define指令把YES定義為1,NO定義為0.
例如,給一個BOOL型別的變數賦值為23是可以編譯成功的,編譯器在處理過程中會將該變數認定為真,因為BOOL型別邏輯上來說是非零即為真。
注意:
1.只有 a =1 的時候,才是YES,要是其他值(0除外)為NO。慎用 a==YES 這種方式!
2.上面說過,bool實際型別是:_Bool(int) ,表達方式 true和false,判讀也行
3.Boolean, 實際型別:unsigned char,表達方式TRUE和FALSE,注意方式跟BOOL一樣
詳情可以檢視這篇
2.id型別:
id資料型別可儲存任何型別的物件。
從某種意義上說,它是通用物件型別,這和C語言中的void *很相似。
如果要用基本型別代替,需要對基本資料型別進行封裝。
id是一個指向任意一個繼承了NSObject類的物件。
需要注意的是,id是一個指標,所以在使用id的時候不需要加星號。
例如:
id anobject = nil;
id型別是Objective-C中經常使用的一種重要資料型別,它是Objective-C動態繫結的基礎。
例子:下方的程式碼中,在一個數組中儲存了若干個物件,有NSNumber和NSString型的,當用戶無法準確獲取物件的型別時,可以使用id這種通用的物件型別:
3.instancetype型別
在類方法中,例如,以alloc、new開頭的方法,以及例項方法中autorelease、init、retain等方法的返回值型別就是instancetype型別,這些就稱為關聯返回型別的方法。這些方法的返回值是一個以方法所在的類為型別的物件。例如,在NSObject類的alloc和init方法,呼叫後會返回一個NSObject型別的物件。
+(instancetype)alloc;
-(instancetype)init;
使用instancetype作為方法返回值的好處是可以確定物件型別,以便幫助編譯器更好地定位程式碼問題。
4.id和instancetype的異同:
同:都可以作為方法的返回值型別。不同:1.id可以作為方法或函式的引數型別,也可以單獨使用這種型別定義的變數,而instancetyoe不行.
2.如果方法的返回值型別是instancetype,那麼它返回的一定是這個型別的物件;如果方法的返回值型別是id,那麼它返回的是未知型別的物件。
相關推薦
Objective-C之資料型別
一概述: Objective-C是在C語言基礎上拓展出的新語言,所以它是能相容C語言程式碼的,C語言中的基本資料型別如int、float、double和char在Objective-C中是完全可以正常使用的。除此之外,Objective-C還拓展了一些新的資料型別如BO
C#之資料型別轉換,迴圈和三元表示式使用方法
轉換資料型別 Convert.To…… 想把資料轉換成什麼型別就寫些什麼樣的,在convert.To直接加 //這一行程式碼要用int型別的變數來接收,那麼可以說,這個方法的返回值是int型別 Int numbers=convert.ToInt32(“4”);
objective-c基本資料型別【轉】
1、Object-c提供基本資料型別:int、float 、double 、char 示例程式碼測位元組數: //資料型別: //整形(int、short int、long int、unsigned int、unsigned shor
iOS objective-c之-5:資料型別
C語言擁有布林型別bool,objective-c擁有布林型別BOOL,具有YES和NO值,Cocoa程式碼中要用B OOL。BOOL實際上是一種對帶符號的字元型別(signed char)的定義(typedef),使用8位儲存空 間,YES定義為1(
c++筆記之資料型別轉換
#include <iostream> #include <string> using namespace std; class Complex { public: Complex() //預設建構函式 { real = 0; imag = 0;
c++基本資料型別之整形及賦值方法
#include <iostream> // climits 是由c裡的limits.h轉化成c++可用的limits前面的c表示是從c的標頭檔案過來的,所以叫climits #include <climits> using namespace std; int main
有關c語言資料型別轉換之char,unsigned char,unsigned short
這是一道朗訊的筆試題(我把一些相關資料彙總了一下,希望大家能進來廣泛的探討,不甚感激!) #include <stdio.h> int main() { char ca; unsigned char ucb; unsigned shor
C++學習之資料型別—常量
C++常量分為以下字面常量、符號常量、契約性常量、布林常量和列舉常量,讓我們一起來看看這些常量的用法以及特點。 字面常量: 1、整形字面常量 例如 10,057,0xf7,表示方法可以有八進位制,十進位制,十六進位制。預設的型別為int或者lon
C語言學習筆記之資料型別
1、整數型別 1.1 型別 型別 位數 short(或short int) 16位 int 16位或32位 long (或long int) 32位 long long(或long lo
黑馬程式設計師——C語言筆記之資料型別與常量
------- android培訓、java培訓、iOS培訓、.Net培訓、期待與您交流! ---------- 1、什麼是資料型別 資料型別是指資料以何種方式儲存在記憶體中,不同的型別儲存方
Objective-C之成魔之路【8-訪問成員變量和屬性】
order 線程安全 ring 內容 時間 targe 簡化 音樂 blank 郝萌主傾心貢獻,尊重作者的勞動成果。請勿轉載。 假設文章對您有所幫助,歡迎給作者捐贈,支持郝萌主,捐贈數額任意,重在心意^_^ 我要捐贈: 點擊捐贈 Cocos2d-X源代碼
Objective-C之協議
oc 協議 objective-c 其實OC中的協議有點像接口或稱抽象類。OC中的協議定義了一系列的方法 , 有些方法是必須實現的 , 有些方法是可以不用實現的。定義一個協議的關鍵字是 : @protocol例如:@protocol Ainy -(void) Print;@end如上就是一個
Objective-C之NSArray
Objective-C NSArray Foundation 數組是有序的對象集合。通常情況下,一個數組中的所有元素都是一種特定的類型,但這不是必須的。不可變數組由NSArray類處理,可便數組由NSMutableArray類來處理。後者是前者的子類。 今日講解 : NSArray-->首先來一
四、資料庫之資料型別
首先補充點了解的小知識; select * from mysql.user #顯示出來亂了 select * from mysql.user\G #加了\G後一行一行顯示了 一、資料型別:分不同種類去存不同型別的資料 儲存引
Python基本語法之資料型別
Python資料型別 基本資料型別 資料型別 說明 Numbers int 有符號整型 long 長整型[也可以代表八
C#常用資料型別轉換工具類
using System.Collections; using System.Collections.Generic; using UnityEngine; using System; using System.IO; using System.Text; /// <summary> /
《SQL入門經典》筆記(第二章:建立資料庫之資料型別)
“建立資料庫”包括五個內容:定義資料結構、管理資料庫物件、規格化過程、操作資料以及管理資料庫事務 1. 什麼是資料型別? 資料型別用於指定特定列所包含資料的規則,它決定了資料儲存在列裡的方式。SQL最基本的資料型別有字串、數值、日期和時間(其實每個實現都有自己的資料型別
JavaSE之資料型別與運算子
package cn.shuju.java; import java.io.IOException; //本節目標 //1.java識別符號與關鍵字 //2.java資料型別劃分 //3.java運算子 //對於類和變數的命名,java的標準命名規範為“駝峰”命名法 //對於類名,類
《JavaScript高階程式設計》——JS基本概念之資料型別
ECMAScript 中有五種簡單資料型別(基本資料型別):Undefined、Null、Boolean、Number 和 String。還有一種複雜資料模型:Object。 資料型別 1 typeof 操作符 typeof 用來檢測給定變數的資料型別。對一個值使用 typeof
資料庫之資料型別
首先補充點了解的小知識; select * from mysql.user #顯示出來亂了 select * from mysql.user\G #加了\G後一行一行顯示了 一、資料型別:分不同種類去存不同型別的資料 儲存引擎決定了表的型別,而表記憶體放的資料也要有不同的型別,每種資料型別