對象的簡單記憶體分析,對象簡單記憶體分析

來源:互聯網
上載者:User

對象的簡單記憶體分析,對象簡單記憶體分析

在如今學習的過程中,我們更多的是在練習如何使用各種方法或某種套路,例如需要設計某個app的時候,我們可能會說我們之前設計過的模型中直接套過來使用,或者在網上需找類似的demo,隨著時間和經驗的積累,我們在這一方面越來越得心應手,以後一直是copy、copy等,但對一些簡單的本質東西不甚瞭解了,雖然這些東西也可以不必去知道,但我認為多瞭解一些基本的東西還是有好處的,下面就來簡單的說一些對象的記憶體的問題:1.我們先來建立一個Person類:
#import <Foundation/Foundation.h>@interface DCPerson : NSObject{    int       age;    NSString  *name;}-(void)eat;-(void)walk;@end

代碼很簡單,就沒有寫注釋了。首先是建立一個DCPerson類,這個類有兩個屬性,age和name。同時有兩個方法,分別是-(void)eat和
-(void)walk。
當我們在程式中建立一個類的時候,在記憶體中會給類分配記憶體,首先類肯定是有地址的,其次類中會有對應的方法。

當我們使用類建立對象的時候,會相應的給對象分配儲存空間。例如我們建立兩個對象person1和person2。

- (void)viewDidLoad {    [super viewDidLoad];    //建立person1對象    DCPerson *person1=[[DCPerson alloc] init];    [person1 age];    [person1 walk];    self.person1=person1;    //建立person2對象    DCPerson *person2=[[DCPerson alloc] init];    [person2 age];    [person2 walk];    self.person2=person2;}

這樣,記憶體中就會多出兩塊地區,用來存放person1對象和person2對象。

下面先,結合圖片來分析大概的情況。

當我們使用類建立一個對象的時候,每個對象就會有一個isa指標,當我們給對象發送訊息的時候,對象會通過自身的isa指標去類中找對應的方法,從來來實現方法。屬性是每個對象特有的,而方法是所有對象共有的,只有一份。類在記憶體中只會被載入一次。

以上是一些自己對對象記憶體的簡單分析,只是做了一些很簡單的分析,有不對的地方還望大神指正,謝謝!

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.