天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

C++開發(fā)者快速學(xué)習(xí)Objective-C語言核心語法

  本文將Objective-C討論了語言的核心語法。這部分開始詳述一些具體的語法。正如你期待的一樣,涉及到了定義和類。

  類并不是特殊的

  在Smalltalk中,類是具有一些特性的對(duì)象。在Objective-C中也一樣。一個(gè)類是一個(gè)對(duì)象,對(duì)象回應(yīng)消息。Objective-C和C++都分離了對(duì)象分配和初始化。

  在C++中,對(duì)象分配通過新的操作。在Objective-C中,這樣的操作是通過給類發(fā)送分配消息—調(diào)用malloc()或者一個(gè)等價(jià)。

  C++中的初始化是通過調(diào)用一個(gè)與類同名的函數(shù)。Objective-C并沒有區(qū)別初始化方法和其他方法,但出于慣例缺省的初始化方法就是初始化。

  當(dāng)你聲明一個(gè)方法讓實(shí)例去回應(yīng),聲明通常已“-”開頭,并且“+”用作類的方法。在文檔中對(duì)這些消息使用一些前綴是很普遍的,所以你也可以說+alloc和-init來暗示alloc是傳給一個(gè)類,init傳給實(shí)例。

  類在Objective-C中,正如在其他一些面向?qū)ο笳Z言,都是對(duì)象工廠。大多數(shù)類不用自行實(shí)現(xiàn)+alloc,而是從他們的父類中繼承。在NSObject中,父類在大多數(shù)Objective-C程序中,+alloc方法調(diào)用+allocWithZone:.使NSZone作為一個(gè)參數(shù),一個(gè)C結(jié)構(gòu)包含對(duì)象分配的一些策略。回顧19世紀(jì)80年代,當(dāng)Objective-C用在NeXTstep來實(shí)現(xiàn)設(shè)備驅(qū)動(dòng)和只有8MB內(nèi)存25MHZ的CPU機(jī)器的GUI上面時(shí),NSZone對(duì)優(yōu)化非常重要。同時(shí),這或多或少的被Objective-C程序員所忽視。(很有可能成為象NUMA構(gòu)架一樣流行,更普遍。)

  眾多優(yōu)秀的特性之一就是對(duì)象創(chuàng)建語義是由庫定義的并且語言不是類簇的思想。當(dāng)你傳一個(gè)-init消息給對(duì)象時(shí),它返回一個(gè)初始化對(duì)象。這可能是你發(fā)送消息的那個(gè)對(duì)象,但不一定肯定就是。這和其他初始化程序一致的。很有可能一些公共類的特殊子類在不同數(shù)據(jù)上更有效。

  實(shí)現(xiàn)這個(gè)特性的通用方法叫做isa-swizzling。正如我前述,Objective-C對(duì)象是C結(jié)構(gòu),這些結(jié)構(gòu)第一個(gè)元素是指向類的指針。這個(gè)元素是可存取的,正如其他實(shí)例變量一樣;你可以在運(yùn)行時(shí)通過分配新值來改變對(duì)象的類。當(dāng)然,如果你對(duì)對(duì)象的類設(shè)置在內(nèi)存中有著不同的布局,這些設(shè)置可能嚴(yán)重錯(cuò)誤。

  然而,你可以通過一個(gè)父類來定義布局和通過子集的集合定義行為,舉例來說,這個(gè)技術(shù)用在標(biāo)準(zhǔn)化字符串類(NSString),它對(duì)不同的文本字符集、靜態(tài)事物和其它一些有著各種各樣的實(shí)例。

  因?yàn)轭愂菍?duì)象,你可以象操作對(duì)象一樣操作他們。舉例來說,你可以把他們放在集合。當(dāng)我有一些輸入事件需要通過不同的類的實(shí)例來處理時(shí)我就使用這種格式。你需要?jiǎng)?chuàng)建一個(gè)目錄映射事件命名到類,然后為每一個(gè)輸入事件實(shí)例化一個(gè)對(duì)象。如果你在一個(gè)庫中這么做,它允許代碼的使用者輕松的注冊(cè)屬于他們自己的句柄。

  類型和指針

  Objective-C沒有公開允許在堆棧上定義對(duì)象。但并不是真的—很有可能在堆棧上定義對(duì)象,但有些困難,因?yàn)樗茐牧藢?duì)內(nèi)存管理的一種假設(shè)。結(jié)果,每一個(gè)Objective-C對(duì)象都是一個(gè)指針。一些類型由Objective-C定義;這些類型在頭部定義作為C類型。

  在Objective-C中最普遍的3種類型就是id,Class和SEL。id就是指向Objective-C對(duì)象的指針,它等價(jià)于C語言中的void*,你可以映射任何對(duì)象指針類型指向它并且映射他指向其它的對(duì)象指針類型。

  你可以傳任何消息給id,但如果不支持的話會(huì)返回一個(gè)運(yùn)行時(shí)異常。

  類是指向Objective-C類的指針。類是對(duì)象,所以也可以接收消息。類名是一種類型,不是可變的。標(biāo)識(shí)符NSObject是一個(gè)NSObject實(shí)例的類型,但也可作為消息接受者。你可以獲得一個(gè)類,如下:

[NSObject class];          
        

it知識(shí)庫C++開發(fā)者快速學(xué)習(xí)Objective-C語言核心語法,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 小玲被公扒开腿 | 男总裁憋尿PLAY灌尿BL | JEALOUSVUE成熟老师APP | 电影 qvod | 2020亚洲国产在线播放在线 | 欧美人与动牲交ZOOZ特 | 亚洲欧美一区二区三区四区 | av天堂电影网 | 精品欧美一区二区三区四区 | 5g天天影院天天看天天爽 | 国产69精品久久久熟女 | 欧美人妇无码精品久久 | 国产人A片在线乱码视频 | 果冻传媒在线播放 免费观看 | 俄罗斯粗大猛烈18P 俄罗斯雏妓的BBB孩交 | 亚洲无线码一区在线观看 | 欧美另类jizzhd | 乱码AV午夜噜噜噜噜 | 国产精品国产三级国产专区53 | 嫩草影院久久国产精品 | 欧美日韩亚洲一区二区三区在线观看 | 亚洲中文在线精品国产 | 天天插天天射天天干 | 国产成人亚洲精品午夜国产馆 | 东北女人奶大毛多水多 | 国产一区二区三区内射高清 | 欧美在线看欧美视频免费 | 四虎永久在线精品国产 | 哒哒哒高清视频在线观看 | 97在线视频免费人妻 | 四虎国产精品高清在线观看 | 成人影院久久久久久影院 | 日日噜噜大屁股熟妇 | 成人国产亚洲欧美成人综合网 | 国产精品久久高潮呻吟无码 | 人妻精品久久无码专区 | 男女啪啪抽搐呻吟高潮动态图 | 麻豆影视在线直播观看免费 | 欧美成ee人免费视频 | 一道精品视频一区二区三区 | 两个人的视频免费 |