91精品国产品国语在线不卡_久久窝窝国产精品午夜看片_99热极品_中文字幕人妻一区二区三区熟女_香蕉天天人人精品综合_好比天天日天天干图_日日夜夜操伊人_天天干天天干天天_熏衣草研究所免费隐藏入口_欧美乱大交XXXXX潮喷_欧美一区二区三区久久综合_夜夜草天天操_国产中合众合玖玖精品_欧美日本国产日韩激情视频 _国产私密网站入口_66亚洲一卡2卡新区成片发布

廣州APP開發(fā)公司,企業(yè)APP定制開發(fā),手機軟件開發(fā),APP軟件開發(fā)公司哪家好-酷蜂科技

服務(wù)熱線:4000898907

IOS APP開發(fā)主要遇到幾點問題

文章來源:廣州酷蜂科技 專業(yè)手機?? 作者:www.ccttx.cn ??? 發(fā)布時間:2013-09-14 ??? 人氣:

  最近安卓APP開發(fā),IOSAPP開發(fā)公司有很多,但是IOS仍然會存在很多問題,下面小編主要為APP開發(fā)者講解5個點:

 ?。?)任何一個UIView如果沒有被remove掉,即使它被release掉了,依然占用著大量內(nèi)存。UIView需要remove,數(shù)組需要清空;對于一個擁有大量subView的UIView,要最好使用一個for循環(huán)來執(zhí)remove操作

 ?。?)隱藏內(nèi)存泄漏,比如一個UIView,fatherView,上面有許多的子視圖,如果有釋放內(nèi)存的時候僅僅釋放fatherView的內(nèi)存(對其執(zhí)行remove,release操作),那么此處必定內(nèi)存無法回收。即使你的subviews已經(jīng)release了,retainCount=0,但是并沒有remove,所以這也是內(nèi)存泄漏。

 ?。?)下面說說alloc、retain、copy,見到這三個不用說必須release。alloc和retain都會造成計數(shù)器

  ClassA *obj1 = [[ClassA alloc] init];// obj1的計數(shù)器加

  ClassA *obj2=obj1;                       // obj1的計數(shù)器再次加1為

  [obj2 retain];                                //  這樣寫計數(shù)器加1為

  [obj1 release];                              //  obj1的計數(shù)器減1為

  [obj2 release];                              //  這里也可以寫成[obj1 release] ,基于誰retain誰釋放原則最好不這么寫

  說下copy深拷貝和retain淺拷貝的區(qū)別

  ClassA *obj1 = [[ClassA alloc] init]; // obj1計數(shù)器j加

  ClassA *obj2 = [obj1 copy]            //  obj1計數(shù)器不加1,obj2計數(shù)器加

  [obj1 release]                                 // obj2計數(shù)器為0,釋放時必須這樣寫了

  [obj2 release]                                 // obj1計數(shù)器為

  如上,這里注意釋放對象及釋放順序

 ?。?)關(guān)于屬性聲明,首先說說

  @property:你可以理解為系統(tǒng)給你寫了get/set方法

  -(void) setName:(NSString *)name{    if (_name != name) {        [_name release];        _name = [name retain];//這行就是下面解釋的屬性中你定義的屬性起到的作用

  readonly屬性: 只能讀,不能寫;

  assign屬性: 是默認(rèn)屬性,直接賦值,沒有任何保留與釋放問題;

  retain屬性: 會增加原有對象的引用計數(shù)并且在賦值前會釋放原有對象,然后在進行賦值;

  copy屬性: 會復(fù)制原有對象,并在賦值前釋放原有對象,然后在進行賦值;

  atomic、assign、readwrite這三種屬性是默認(rèn)的,可不寫,基本上所有@property都是noatomic的,也就是非線程安全的

  除了基本類型和delegate用assign,其他都用retain,有因為assign是默認(rèn)屬性,所以類似

  可以直接寫成

  說道屬性順便說下self.屬性 = 值,self set屬性 = 值,屬性 = 值,這三種賦值的區(qū)別

  第一種和第二種方式都會造成計數(shù)器加1,需要release掉,而第三種直接賦值給屬性可以稱為弱引用沒有計數(shù)器加1。如果釋放掉后會造成n內(nèi)存釋放過度。

 ?。?)[(UIButton *)[self.view viewWithTag:123] removeFromSuperview]和[[self.view viewWithTag:123] removeFromSuperview]效果是不一樣的,通過tag取出來的對象需要類型轉(zhuǎn)換才能正確移除掉

Tag標(biāo)簽:

  • QQ咨詢

  • 在線咨詢
  • 廣州市酷蜂教育科技有限公司
  • 廣州市酷蜂教育科技有限公司