類與對(duì)象

類型系統(tǒng)

  • 引用類型

    • 類 class
    • 指針 pointer
    • 塊 block
  • 值類型 value type

    • 基礎(chǔ)數(shù)值類型
    • 結(jié)構(gòu) struct
    • 枚舉 enum
  • 類型裝飾

    • 協(xié)議 protocol
    • 類別 category
    • 擴(kuò)展 extension

類 class VS. 結(jié)構(gòu) struct

  • 類型與實(shí)例

    • 類與對(duì)象
    • 結(jié)構(gòu)與值
  • 類——引用類型

    • 位于棧上的指針(引用)
    • 位于堆上的實(shí)體對(duì)象
  • 結(jié)構(gòu)——值類型

    • 實(shí)例直接位于棧中
  • 空間分析

    • 運(yùn)行時(shí)內(nèi)存圖

RPoint.h 接口

@interface RPoint: NSObject
/// 接口,繼承自NSObject

@property int x;//狀態(tài)
@property int y;
/// 屬性,里面放了一些數(shù)據(jù)程艷

-(void)print;//行為
///方法,簡(jiǎn)單來(lái)說(shuō)就是類內(nèi)的函數(shù)

@end

類:

RPoint.h 實(shí)現(xiàn)

#import<Foundation/Foundation.h>
#import "rpoint.h"

@implementation RPoint

-(void)print{
  NSLog(@"[%d,%d]",self.x,self.y);//self就是當(dāng)前的實(shí)例
}

@end

在程序中

//創(chuàng)建對(duì)象
RPoint *rp1[[RPoint alloc] init];//對(duì)象都以指針形式存在,先進(jìn)行動(dòng)態(tài)內(nèi)存分配,alloc是向系統(tǒng)請(qǐng)求內(nèi)存分配,init進(jìn)行初始化。

rp1.x=10;
rp1.y=20;
[rp1 print];//調(diào)用方法

結(jié)構(gòu)

定義一個(gè)結(jié)構(gòu)SPoint.h

typedef struct{
  int x;
  int y;
}Spoint;

結(jié)構(gòu)中不能再加入方法。

在程序中創(chuàng)建一個(gè)結(jié)構(gòu)的實(shí)例

Spoint sp1;
sp1.x=10;
sp1.y=20;

對(duì)象的空間分析

對(duì)象的空間分析.png

值的空間分析

值的空間分析

棧和堆的區(qū)別

棧和堆.png

在程序中行為上的區(qū)別

拷貝

RPoint *rp2=rp1;
rp2.x++;
rp2.y++;

[rp1 print];
[rp2 print];

Spoint sp2=sp1;
sp2.x++;
sp2.y++;
NSLog(@"[d%,d%]"sp1.x,sp1.y);
NSLog(@"[d%,d%]"sp2.x,sp2.y);

rp1和rp2同時(shí)被更改,而sp2的更改對(duì)sp1無(wú)影響


拷貝行為.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容