iOS開發之weak和assign的區別
共同點:
都可以修飾物件型別的property, 不會增加其引用計數.
不同點:
1.出現時期, assign出現在ARC之前, weak出現在ARC之後;
2.可修飾的型別, assign既可以修飾物件, 又可以修飾基本型別, 而weak只能修飾物件;
3.安全性, assign修飾的物件在被銷燬之後, 其指標依然存在, 容易導致野指標錯誤, 而weak修飾的物件銷燬之後指標自動設定為nil, 不會發生危險.
總結:
在ARC時代, 應該用weak來表示弱引用, 比如代理物件, 而用assign來修飾基本資料型別, 比如int, float, double. 最後建議, 為了相容64位CPU, 儘量避免使用C資料型別, 而應該使用Objective-C新增的資料型別, 如NSInteger, NSUInteger, CGFloat等等.
相關推薦
iOS開發之weak和assign的區別
共同點: 都可以修飾物件型別的property, 不會增加其引用計數. 不同點: 1.出現時期, assign出現在ARC之前, weak出現在ARC之後; 2.可修飾的型別, assign既可
iOS開發之NS_ASSUME_NONNULL_BEGIN和 NS_ASSUME_NONNULL_END
最近使用新更新的Xcode10.0新建類時,發現它自動為我們在.h檔案裡添加了NS_ASSUME_NONNULL_BEGIN和 NS_ASSUME_NONNULL_END。如下示例: #import <UIKit/UIKit.h> NS_ASSUME_
芒果iOS開發之ARC和MRC混編
ARC工程中使用MRC的類: 在targets的build phases選項下Compile Sources下選擇要不使用arc編譯的檔案,雙擊它,輸入 -fno-objc-arc 即可 MRC工
iOS開發之OC 和 Swift混編
前言 相信很多開發者在開發過程中,使用別人封裝好的三方框架,但由於三方框架的開發語言(OC或者Swift)與現有工程的開發語言不一致,導致無法直接使用,那麼對於混編來說,是不二的選擇。 Swift專案使用OC框架 1. 建立橋接檔案,一般的命名規則(專案名-Br
iOS開發知識之:iOS開發中alloc和new的區別
1.在實際開發中很少會用到new,一般建立物件咱們看到的全是[[className alloc] init] 但是並不意味著你不會接觸到new,在一些程式碼中還是會看到[className new], 還有去面試的時候,也很可能被問到這個問題。 2.那麼,他們兩者之間到底有什麼區別呢 我們看原始碼:
iOS開發之關鍵字nonatomic、assign、retain和copy的認識
nonatomic、assign、retain和copy的認識 nonatomic 指非原子性訪問,不加同步,多執行緒併發訪問會提高效能。如果不加此屬性,則預設是兩個訪問方法都為原子型事務訪問。atomic是ObjectC中使用的一種執行緒保護技術,
ios開發之--CGRect/CGSize/CGPoint/CGVector/CGAffineTransform/UIEdgeInsets/UIOffset和NSString之間的轉換
距離 轉換 nsstring transform ans ins -c cto cnblogs 僅做記錄,一個函數和字符串之間的互相轉換 方法如下: UIKIT_EXTERN NSString *NSStringFromCGPoint(CGPoint point); UI
iOS開發-之UIView屬性hidden, opaque, alpha, opacity的區別
完全 CI lac blue 應該 geb AC image 如何 iOS開發-之UIView屬性hidden, opaque, alpha, opacity的區別 一、alpha 液晶顯示器是由一個個的像素點組成的,每個像素點都可以顯示一個由RGBA顏色空間組成的一種色值
ios開發之--tableview刷新某一個區和某一行
anim ios開發 xpath set nsa sat array 代碼 tableview 在開發中,有時候,我們不需要刷新整個表,只需要刷新局部數據即可,具體代碼如下: //section刷新 NSIndexSet *indexSet=[[NSIndexSe
iOS開發之根據按鈕確定點選的section 和row
分組的tableview cell上面有按鈕,根據按鈕確定點選的是哪一組的哪一行。對於初學者來說不好判斷,那麼下面就來跟大家分享一下如何實現吧。 cell 方法裡面新增 [cell.pingjiaBtn addTarget:self action:@selector(didPingJiaBut
iOS開發之根據按鈕確定點擊的section 和row
get ott 實現 事件 oid self. all 初學者 shopping 分組的tableview cell上面有按鈕,根據按鈕確定點擊的是哪一組的哪一行。對於初學者來說不好判斷,那麽下面就來跟大家分享一下如何實現吧。 cell 方法裏面添加 [cell.p
iOS開發之給navigationbar和view設定同一張圖片
###### 效果一: 今天因為這個小東西被吐槽了...但還是決定記錄一下... 其實說是給navigationbar和view設定同一張圖片是不對的,應該是隱藏navigationbar,再去掉statusbar的背景色,新增view 最開始
iOS開發之--巨集定義與const的區別及使用方法
巨集定義的常見用法: 定義一段程式碼,或指定字串抽成巨集。 const(常量): 當有字串常量的時候,蘋果推薦我們使用const,蘋果經常把常用的字串定義成const 巨集定義與const的區別: 編譯時刻:巨集是預編譯(編譯之前處理),const是編譯階段。 編
AndroidStudio2.2 Preview3中NDK開發之CMake和傳統 JNI在目錄結構和配置檔案上的區別
自從AndroidStudio更新到2.2,就有了CMake和傳統JNI兩種開發NDK的方法,主要就是在目錄結構和build.gradle上的區別,下面我們將分別介紹目錄區別和build.gradle種配置的區別(提示:在第一次用CMake時,最好在新建專案時勾選Include C++
iOS開發之純Weex+Vuejs開發原生App整體結構和除錯步驟(二)
前言 上一篇文章是根據Weex官方的介紹,啟動了Weex的Hello World的介紹以及一些外掛的安裝 環境部署和Debug 之前花了2周時間看了下Vue的語法和用法以及一些實戰介紹,畢竟是iOS開發,還是有必要把新學的東西寫下來,而且會寫的非常詳細,能保證從我git倉庫弄下來的基礎結構
iOS開發之Weex爬坑之路環境部署和Devtools Debug(一)
前言 不多說,直接開始Weex,算是記錄這段時間對新技術的學習積累。期間看了很多Vue.js和Node.js的基礎,順便捋了以下CSS的flex-box佈局等等前端的知識,太多了太雜了,還是用筆記記錄下。直接從官方介紹,開始 補充一個傳送門:和文章沒什麼關係 JS中的async和await
mui開發app之plusready和init區別
除了function定義函式之外,全都寫在plusReady之中,function呼叫也放在其中,畢竟做app開發呼叫html5+api十分的頻繁,就像jq的$(document).ready()一樣的道理,尤其是出現plus物件的一定放在plusReady裡面!
iOS開發之AutoLayout中的Content Hugging Priority和 Content Compression Resistance Priority解析
本篇部落格的內容也不算太複雜,算是AutoLayout的一些高階的用法。本篇部落格我們主要通過一些示例來看一下AutoLayout中的Content Hugging Priority以及Content Compression Resistance Priority這兩個優先順序。下方我們先來簡單的看一下這兩個
iOS開發之設定導航欄標題的字型大小和顏色
方法一:自定義檢視。 UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 44)];
iOS開發之32位和64位系統
參考網址:http://blog.csdn.net/sakulafly/article/details/41089411 在蘋果推出iPhone5S時,64位的應用就走到了眼前。當時就看見蘋果官方資料宣佈iOS7.x的SDK支援了64位的應用,而且內建的應用都已經是64