IOS開發--第四階段--記憶體管理,ios第四階段

來源:互聯網
上載者:User

IOS開發--第四階段--記憶體管理,ios第四階段

深拷貝與淺拷貝

 

只有實現了NSCoping協議的對象才能進行copy,自訂對象的copy需要實現NSCopy協議,具體是深拷貝還是淺拷貝取決於協議如何?

 

copy得到的類型一定是不可變的;mutableCopy得到的類型一定是可變的

淺拷貝:拷貝過後記憶體位址(指標)沒有改變;

深拷貝:拷貝過後記憶體位址(指標)發生改變;

不可變的類型進行不可變的拷貝是淺拷貝,其他都是深拷貝;只要見到mutable,都是深拷貝(不管是拷貝類型還是拷貝方法);

 

1)NSString: copy   淺拷貝 ,   拷貝過後為  NSString   不可變;

                    mutableCopy  深拷貝,    拷貝過後為 NSMutableString  可變;

2)NSMutableString: copy   深拷貝  ,    拷貝過後為  NSString   不可變;

                                mutableCopy  深拷貝 ,   拷貝過後為 NSMutableString  可變;

(NSArray,   NAMutableArray)  (NSDictionary,  NSMutableDictionary)  NSSet(集合)同上類似

3)copy時順便會附帶一個Strong

4)@autoreleasepool{} 自動釋放池; for迴圈建立一個對象就釋放一個對象

5)NSAutoreleasepool *pool = [NSAutoreleasepool  alloc] init];

 

注意:

錯誤碼:@property ( nonatomic,copy)NSMutableArray * mutableArray;

運用該種寫法時必須重寫其set放法;

正確寫法:@property ( nonatomic,retain)NSMutableArray * mutableArray;

 

ARC

ARC中[super delloc]方法已不能調用,但delloc方法依然有效,所以依然可以 [[NSNotificationCenter defaultCenter] removeObser:self];

 

Strong,Weak

1)Strong為強引用,Strong指標指向的對象永不釋放,沒有strong指標指向它時,它會立即釋放;

2)weak是弱應用,當其對象被釋放時自動置為空白;沒有Strong和weak指標修飾的對象預設為__strong;

3)在ARC中@property retain的對象在編譯是會自動編譯為Strong

4)strong,weak不修飾簡單類型,簡單類型用assgin 或  unsafe_unretained 

5)在ARC的block中,之前為防止循環參考用__block,現在用weak;

 

在ARC環境下添加非ARC檔案:-fno- objc-arc

在非ARC環境下添加ARC檔案:-fobjc-arc

 

拓展:

轉換, 橋接

1).m                OC和 C 可以直接混編;

2).m--->.mm   OC與C ,C++混編時;

3) .cpp             C和C++混編,不與OC混編 ;

4)__bridge_retained      OC--->C    轉換的時候會retain一次;(用於全域的方法,且方法必須是在.h中聲明過的方法);

5)__bridge_transfer       C--->OC    轉換的時候會release一次;

6)__bridge                    C<--->OC 相互轉換時引用計數不產生任何更改;(用於局部的方法,且方法必須是在.h中聲明過的方法);

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.