日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Objective-C 什么是类

發布時間:2023/11/27 生活经验 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Objective-C 什么是类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Objective-C 什么是類

轉自http://www.189works.com/article-31219-1.html

之前一直做C++開發,最近2個多月轉?Objective-C, 入門的時候,遇到了很多的困惑。現在過節,正是解決他們的好時機。

主要參考來自http://www.sealiesoftware.com/blog/archive/2009/04/14/objc_explain_Classes_and_metaclasses.html

?Objective-C 也是面向對象的語言,那么,首先需要知道的就是什么是class。

C++ 的class相對?Objective-C 中的class,就簡單明了很多了。C++ 中class簡單的說,就是一個大的struct, 絕大部分的class可以在編譯時決定好class的布局(通過虛繼承來的class成員變量只能動態確定)。當然,最關鍵的是,你不可能在運行時創建一個class,因為所有的class在運行之前已經確定下來,并保存在二進制文件中。

但是,?Objective-C 確不同,?Objective-C 可以在運行中創建class,修改class等等。那么,改如何定義?Objective-C 中的class呢。

在這之前,我們先看一個簡單的,class的實例對象。

@interface Object?
{

??? //typedef struct objc_class *Class;?
??? Class isa;??? /* A pointer to the instance's class structure */?
}

對象包含一個指向class的指針,而這也就意味著,任何包含class 的指針都可以被看做是對象(object)。

struct objc_class {????????????
??? struct objc_class *isa;??? //這里也有isa指針?
??? struct objc_class *super_class;??? //這里還有一個指向基類的指針?
??? const char *name;????????
??? long version;?
??? long info;?
??? long instance_size;?
??? struct objc_ivar_list *ivars;

??? struct objc_method_list **methodLists;

??? struct objc_cache *cache;?
???? struct objc_protocol_list *protocols;?
};

顯然,在?Objective-C 眼中,一切都是對象,甚至包括我們的class。而對象就是class的實例,那么,class是什么的實例呢,metaclass。

事實上,我們并沒有解決問題。metaclass 事實上又是root metaclass 的實例,而root metaclass 自己又是 root metaclass 的實例,一圖勝千言,不做贅述。

posted on 2012-05-14 11:24 linyawen 閱讀(...) 評論(...) 編輯 收藏

轉載于:https://www.cnblogs.com/linyawen/archive/2012/05/14/2499075.html

總結

以上是生活随笔為你收集整理的Objective-C 什么是类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。