語法上的小問題
語法上的小問題
深拷貝(mutableCopy)跟淺拷貝(copy)
首先看一組照片:
alt text
簡單來說:深拷貝就是內容拷貝;淺拷貝就是指標拷貝。
系統物件的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;
}
相關文章
- goroutine 語法問題Go
- [20200227]使用tcpdump or and ()語法問題.txtTCP
- latex 語法塊中字型加粗問題、換行問題
- uniapp轉譯微信小程式動態樣式語法問題(:style)APP微信小程式
- 開發小程式被問到最頻繁的問題(上)
- vue匯入錯誤 eslintrc.js語法的問題VueEsLintJS
- mysql8.0 部分sql語法報錯問題MySql
- JavaScript 新語法 「雙問號語法」與「可選鏈語法」JavaScript
- 關於網路硬體配置出現問題,無法上網問題的解決
- C++語法小技巧C++
- 關於輸出的小語法點
- Centos 7 上安裝 jdk 及問題小記CentOSJDK
- Git clone 的小問題Git
- 【Go語言探險】線上奇怪日誌問題的排查Go
- markdown 標題語法
- wordress小程式圖片訪問出現404問題解決辦法
- 搜狗輸入法在Linux Mint系統上的問題總結Linux
- C#6語法小計C#
- ES6 語法小摘
- 小程式問題
- 大端和小端的問題
- 關於DrawerLayout的小問題
- WKWebView的Cookie問題小記WebViewCookie
- 多語言遇到的問題
- idea無法黏貼_IntelliJ Idea 複製貼上的問題(轉載)IdeaIntelliJ
- ES6新語法上
- 分治法求解問題
- 兩個小問題深入淺出List的效能問題
- 關於debian系統下使用vi編輯語法不高亮的問題
- 常用Java8語法小結Java
- 加殼上碰到的問題
- 成語答題小程式
- 小問題集錦
- 一個小問題
- 小程式 require 引入空包的問題UI
- 工作遇到的問題小記(一)
- jupyter lab 的三個小問題
- 快取 Laravel 模型的小問題快取Laravel模型
- 使用git add 遇到的小問題Git