1. 程式人生 > >Objective-C之資料型別

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 檔案裡頭

的 bool,bool其實是 int,假如使用了C++,那麼 stdbool.h檔案裡面的定義就變成了C++的 bool。

但是,如果是在 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-CNSArray

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後一行一行顯示了 一、資料型別:分不同種類去存不同型別的資料 儲存引擎決定了表的型別,而表記憶體放的資料也要有不同的型別,每種資料型別