iOS---類方法(靜態方法)和實例方法


類方法  
實例方法是以+開頭的方法, 實例方法是用實例對象訪問;
 
類方法的對象是類而不是實例,通常用來創建對象或者工具類。
 
 
在實例方法里,根據繼承原理發送消息給self和super其實都是發送給self
 
 
在類方法里面self是其他的類的類方法,在類方法中給self發送消息只能發給類方法self或者是類super 
 
 
什么時候用類方法,要創建一個實例時候獲取一個共享實例,或者獲取關於類的一些共有信息

 

1.實例方法/動態方法

    a).標識符:-

    b).調用方式:(實例對象    函數)

    c).實例方法在堆棧上。

2.靜態方法/類方法

    a).標識符:+

    b).調用方式:(類    函數)

    c).靜態方法在堆上分配內存。

3.靜態方法和實例方法的區分

     a).靜態方法常駐內存,實例方法不是,所以靜態方法效率高但占內存。事實上,方法都是一樣的,在加載時機和占用內存上,靜態方法和實例方法是一樣的,在類型第一次被使用時加載。調用的速度基本上沒有差別。

    b).靜態方法在堆上分配內存,實例方法在堆棧上。事實上所有的方法都不可能在堆或者堆棧上分配內存,方法作為代碼是被加載到特殊的代碼內存區域,這個區域是不可寫的。

    c).實例方法需要先創建實例才可以調用,比較麻煩,靜態方法不用,比較簡單。

    d).靜態方法是靜態綁定到子類,不是被繼承。

    e).一般使用頻繁的方法用靜態方法,用的少的方法用動態的。靜態的速度快,占內存。動態的速度相對慢些,但調用完后,立即釋放類,可以節省內存,可以根據自己的需要選擇是用動態方法還是靜態方法。

    f).靜態方法修改的是類的狀態,而對象修改的是各個對象的狀態。

    g).類的實例調用是在類的生命周期中存在,當類沒有了以后,對應的實例也就沒有了,對應的方法也就沒有了。靜態類不然,只要你引用了那個靜態類的命名空間,它就會一直存在,直到我們推出系統。

 

注:下面的就是用的類方法,特點:首字母大寫,實例方法往往首字母小寫

 

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM