中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

iOS培訓教程——iOS開發中常見的語句@synthesize obj=_obj詳解

發布時間:2020-07-21 01:21:04 來源:網絡 閱讀:425 作者:藍鷗蔣杏飛 欄目:移動開發

學習iOS開發時,會遇到這樣那樣的問題,那么大家有沒有遇到過@synthesizewindow=_window;,在這里面window與_window分別代表什么知道嗎?它們的差別在哪,又如何用使用它們,這是學習iOS開發中最常見的問題了。

這里也會涉及到Objective-C中對類、類的屬性、類的存取器、類的局部變量的理解:藍鷗iOS培訓推薦:

在32位系統中,如果類的@interface部分沒有進行ivar聲明,但有@property聲明,在類的@implementation部分有響應的@synthesize,則會得到類似下面的編譯錯誤:

Synthesizedproperty'xX'musteitherbenamedthesameasacompatibleivarormustexplicitly

nameanivar在64-bit時,運行時系統會自動給類添加ivar,添加的ivar以一個下劃線"_"做前綴。

上面聲明部分@synthesizewindow=_window;意思是說,window屬性為_window實例變量合成訪問器方法。

也就是說,window屬性生成存取方法是setWindow,這個setWindow方法就是_window變量的存取方法,它操作的就是_window這個變量。通過這個看似是賦值的這樣一個操作,我們可以在@synthesize中定義與變量名不相同的getter和setter的命名,籍此來保護變量不會被不恰當的訪問。

下面給大家舉一個最常見的例子,一看就明白了:

寫法一:

iOS培訓教程——iOS開發中常見的語句@synthesize obj=_obj詳解

寫法二:

iOS培訓教程——iOS開發中常見的語句@synthesize obj=_obj詳解

這個類中聲明了一個變量_myObject,又聲明了一個屬性叫myObject,然后用@synthesize生成了屬性myObject的存取方法,這個存取方法的名字應該是:setmyObject和getmyObject。@synthesizemyObject=_myObject的含義就是屬性myObject的存取方法是做用于_myObject這個變量的。這種用法在Apple的SampleCode中很常見。

那么,一樣是存取操作語句整理

iOS培訓教程——iOS開發中常見的語句@synthesize obj=_obj詳解

iOS培訓教程——iOS開發中常見的語句@synthesize obj=_obj詳解

兩種賦值方式的區別何在呢?

self.nameVarPtr=xxx這種賦值方式等價于調用[selfsetnameVarPtr:xxx],而setnameVarPtr:xxx的方法的

實現又是依賴于@propert

y的屬性的,比如retain,assign等屬性。

nameVarPtr=xxx的賦值方式,僅僅是對一個指針進行賦值。nameVarPtr僅僅是一個指針變量,記錄了xxx的

地址。在這個過程中不會調用setter方法,不會調用setter方法,就和@property沒有關系,從而,也和retain

,assign等屬性沒有關系。這種賦值方式就是一個簡單的指針賦值。

從上面的說法中得出,對成員變量進行賦值,為防內存泄露,就一定要注意以下兩點:

1、self調用setter方法的方式

iOS培訓教程——iOS開發中常見的語句@synthesize obj=_obj詳解

2、指針賦值方式,不會調用setter方法

iOS培訓教程——iOS開發中常見的語句@synthesize obj=_obj詳解

總結:在給某個變量賦值的時候,要盡量寫self.myObj=xxx;因為這種方法最可靠,最實用的方法,在iOS開發中用起來就會很方便了,我是藍鷗蔣杏飛,有相同愛好的同仁們可以相互討論下下。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

周宁县| 平昌县| 铁岭县| 兴安县| 英山县| 景东| 准格尔旗| 光山县| 康定县| 佛学| 宜丰县| 芒康县| 胶州市| 潞西市| 石柱| 淮北市| 闽清县| 信宜市| 林芝县| 灵台县| 阿图什市| 赣州市| 公安县| 咸宁市| 汝阳县| 含山县| 北票市| 巩留县| 区。| 松滋市| 边坝县| 乐昌市| 宁化县| 方山县| 万全县| 平塘县| 黄浦区| 宝鸡市| 塘沽区| 绍兴市| 武功县|