語法上的小問題
語法上的小問題
深拷貝(mutableCopy)跟淺拷貝(copy)
首先看一組照片:
簡單來說:深拷貝就是內容拷貝;淺拷貝就是指標拷貝。
系統物件的copy跟mutableCopy方法
無論是集合類物件,還是非集合類物件,接收到copy跟mutableCopy訊息時,都會有以下準則:
- copy返回imutable物件;如果返回mutable就會崩潰
- mutableCopy返回mutable物件
[immutableObject copy] // 淺複製
[immutableObject mutableCopy] //非集合深複製 集合單層深複製
[mutableObject copy] //深複製
[mutableObject mutableCopy] //非集合深複製 集合單層深複製
更多資訊可以參考這裡
Property的修飾符
- 預設是strong型別
- xib/storyboard連結的物件可以用weak,是因為IBOutlet的view不被釋放,這個連結的物件的引用計數不會為0.
- block宣告使用copy
- 字串使用copy
- 屬性宣告修飾符有:strong, weak, unsafe_unretained, readWrite,預設strong, readWrite的。
- 沒有指明是nonatomic的時候,預設時候atomic原子操作,會影響效能。
ARC下重寫 Getter and Setter
- 只重寫setter和getter其中之一,可以直接重寫:
@property (nonatomic, strong) NSMutableArray *array;
- (void)setArray:(NSMutableArray *)array {
if (_array != array) {
_array = nil;
_array = array;
}
}
- 兩個一起重寫的時候
@property (nonatomic, strong) NSMutableArray *array;
@synthesize array = _array;
- (void)setArray:(NSMutableArray *)array {
if (_array != array) {
_array = nil;
_array = array;
}
}
- (NSMutableArray *)array {
return _array;
}
or
@interface ViewController : UIViewController{
NSMutableArray *_array;
}
- (void)setArray:(NSMutableArray *)array {
if (_array != array) {
_array = nil;
_array = array;
}
}
- (NSMutableArray *)array {
return _array;
}
相關文章
- JavaScript瀏覽器歷史的語法小問題JavaScript瀏覽器
- 語法問題
- goroutine 語法問題Go
- JS語法: 由++[[]][+[]]+[+[]] = 10 ?引發的問題JS
- uniapp轉譯微信小程式動態樣式語法問題(:style)APP微信小程式
- latex 語法塊中字型加粗問題、換行問題
- 開發小程式被問到最頻繁的問題(上)
- openJPA 遭遇PG 之 like 語法問題
- 一個使用SQL語句解決的小問題SQL
- Markdown語法小結
- CSS語法小記CSS
- 更改系統路由解決無法上網的問題路由
- Centos 7 上安裝 jdk 及問題小記CentOSJDK
- C++語法小技巧C++
- execute immediate 語法小結
- 客戶端無法連線資料庫的小問題客戶端資料庫
- mysql8.0 部分sql語法報錯問題MySql
- Go 語言簡介(上)— 語法Go
- 關於網路硬體配置出現問題,無法上網問題的解決
- JavaScript 新語法 「雙問號語法」與「可選鏈語法」JavaScript
- Java基礎語法[上]Java
- Git clone 的小問題Git
- jquery中的小問題jQuery
- [20160809]exp語法問題.txt
- T-SQL的CREATE TABLE語法(上)SQL
- C#6語法小計C#
- ES6 語法小摘
- markdown 標題語法
- 如何解決無線路由器無法上網的問題路由器
- 解決RAW在SQLPLUS上無法顯示的問題SQL
- 小程式問題
- javascript小問題JavaScript
- wordress小程式圖片訪問出現404問題解決辦法
- vue匯入錯誤 eslintrc.js語法的問題VueEsLintJS
- ES6新語法上
- WKWebView的Cookie問題小記WebViewCookie
- 利用C語言小程式來解決大問題(轉)C語言
- 解決克隆虛擬機器無法上網問題虛擬機