關於方法裏創建類對象

這是上個周的問題了,也沒徹底解決,不過每次遇到都是自己說服自己去理解。還有就是設計模式上的問題吧。楊總讓我把作業搞的複雜一點,於是我就把長方形,正方形什麼得圖形做了個類工廠,感覺編程也可以像工業生產一樣去做,確實能節省很多的精力。回過頭來想想,發明計算機是爲了什麼,有了編程語言是爲了什麼,不就是爲了解放人麼?和學長交流了一下,設計模式有很多,應對不同的問題,會有不同的設計模式。以後抽空看看設計模式,應該屬於理解的東西,和編程規範差不多吧,就是理解了,不知不覺中用出來的東西。

,上週遇到的問題。

-(cat *)add:(cat *)c1
{
    cat * c2=[[cat alloc]init];
    c2.a=c1.a;c2.b=c1.b;
    return c2;
}

在這裏我只寫個例子吧,這是個實例方法,傳入一個對象,說到底這個對象是個指針,有時候爲了操作不會對原來對象產生變化,就會在方法中創建一個對象,我的理解是創建一個臨時對象,不知道我這種理解對不對。

這個對象創建成功,做完操作,返回。問題來了,要是在方法外,我們再次用到這個C2,這個時候C2所指的位置會不會被釋放?如果沒釋放,何時釋放才合理?假如釋放了,再次引用就是不安全的了。

這就是我剛遇到的問題,可能過幾天回過頭來看看這就不是問題了。

現在我也有自己的理解,用來說服我自己。就是說這個對象開闢了內存,在沒有release的時候是不會釋放的,當程序結束,會由自動釋放池自動釋放。那這部分內存是一直被佔用的,就不會產生不安全的狀況。這樣的解釋很勉強,因爲這樣創建的對象多了的話,會讓系統崩潰。我還不清楚這個自動釋放池到底有多智能,會自動檢測並釋放用完的,還沒釋放的對象,並釋放。

希望路過的大神指點在下。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章