標籤:
拆箱裝箱
數組中只能裝入對象,而很多時候我們需要把類似Int 或者結構體這種裝入此時我們需要進行拆裝基本思想是 把類似int還有結構體 轉換成相對應的對象 然後加入數組 ,匯出時 要從對象型變成對應的int或者結構體類@property NSmutableArray *ages;self.ages=[NSmutableArray Array]; int x=1;NSnumber *objectnumber=x;[self.ages addobject:objectnumber];NSnumber *newobjectnumer=self.ages[0];int newx=[newonjectnumer intvalue]; 頁面跳轉第二章頁面類為SecondViewController靜態頁面一般用storyboard建立 注意要喝VierController進行關聯此時 SecondViewController *l1=[self.stroryboard instantiatedViewControllerWithIdentifier:@"此處填寫storyboard中的ID"];[self presentViewController:l1 animated:YES completion:nil]; 在第二章頁面中回跳[self dismissViewController:YES animated:nil]; 記憶體管理初步
MRC手動記憶體管理中三個方法
retain 導致記憶體計數+1
release 導致記憶體計數-1
copy 複製出來一個新的對象 和之前對象的資料可能一致 但並不是同一個對象 所以記憶體計數+1
autorelease: 自動釋放 當變數出了自動釋放池(autoreleasepool)之後會自動釋放
自動釋放池在項目中有很多看不見
在ARC中;
retain(strong) 先把原先的值release 再把新匯入的值retain
assign (weak) 一般基礎資料型別 (Elementary Data Type)用 int float 記憶體計數不變
readonly 會讓屬性只產生get方法 無set方法;
self.names=name 在readonly下會報錯 在左邊調用的set方法
NSSmutablearray *l1=self.names self.names在右邊調用的就是get方法
和多線程相關
nonatomic 非原子性操作 不安全 效率高 非多線程都用
atomic 原子性操作 線程是安全的 效率低 只有多線程訪問資料的時候才有可能會使用此關鍵字
建立屬性時間要寫
@property(nonatomic,strong)NSMutablearray *friends;
@property(nonatomic)int *age;
字串特例 要寫copy型
@property(nonatomic,copy)NSString *name; (如果是strong 指向同一個記憶體空間 把他賦值給別的變數的話
他們指向同一塊記憶體空間 如果改變最開始的nsstring 那麼之後的都會被改變 所以用copy)
屬性聲明時+1會在當前對象銷毀時 執行dealloc
self.enemys=[[NSmutableArray alloc]init]
self.enemys=[NSmutableArray array]; Factory 方法 多的就是在執行上面的alloc和init後 還添加了autorelease
總結
1.基礎資料型別 (Elementary Data Type) 用assign或者weak 但因為預設 所以不用寫
2.所有的物件類型 (除了NSString)都用strong或者retain
3.NSString 用copy
拆箱裝箱 頁面跳轉 及記憶體管理 0905藍懿教育