你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS正向傳值之:結構辦法和property的區別

iOS正向傳值之:結構辦法和property的區別

編輯:IOS開發綜合

如題中所示:
普通IOS中正向傳值的時分,可以運用:
1. property
2. initWithXXX
這兩種有什麼區別呢?

話不多說。直接上LOG

結構辦法
//即initWithXXX 或許自定義的辦法名
/**
 *  結構辦法中帶不帶init都是一樣的。
 *  convertIntoModelWithDict 辦法跟 initWithDict: 辦法是一樣的。
 */

2016-12-25 13:37:23.059 TransferInfoDemo[19811:1327595] 進入convertIntoModelWithDict辦法
2016-12-25 13:37:27.280 TransferInfoDemo[19811:1327595] setName
2016-12-25 13:37:29.931 TransferInfoDemo[19811:1327595] setAge
2016-12-25 13:37:30.466 TransferInfoDemo[19811:1327595] setGender
2016-12-25 13:37:31.698 TransferInfoDemo[19811:1327595] 要跳出convertIntoModelWithDict辦法了
2016-12-25 13:37:36.175 TransferInfoDemo[19811:1327595] <SecondModel: 0x7d2421b0>

//==================================================================================

2016-12-25 13:40:13.704 TransferInfoDemo[19904:1332710] 進入initWithDict辦法
2016-12-25 13:40:13.704 TransferInfoDemo[19904:1332710] setName
2016-12-25 13:40:13.704 TransferInfoDemo[19904:1332710] setAge
2016-12-25 13:40:13.704 TransferInfoDemo[19904:1332710] setGender
2016-12-25 13:40:13.704 TransferInfoDemo[19904:1332710] 要跳出initWithDict辦法了
2016-12-25 13:40:13.705 TransferInfoDemo[19904:1332710] <SecondModel: 0x796498c0>
屬性
2016-12-25 13:39:03.254 TransferInfoDemo[19872:1330478] 進入init辦法
2016-12-25 13:39:03.254 TransferInfoDemo[19872:1330478] 要跳出init辦法了
2016-12-25 13:39:10.088 TransferInfoDemo[19872:1330478] setName
2016-12-25 13:39:11.993 TransferInfoDemo[19872:1330478] setAge
2016-12-25 13:39:13.496 TransferInfoDemo[19872:1330478] setGender
2016-12-25 13:39:15.464 TransferInfoDemo[19872:1330478] <SecondModel: 0x79b5c160>
區別:

以字典轉模型來說:
創立結構辦法中傳入要轉換的字典,則會在init作用域內調用屬性的setter辦法。(我們也可以運用runtime來靜態的字典轉model:demo中有)
而運用property,則只會在的init完成之後,調用setter辦法時,給予賦值

VC中正向傳值(屬性傳值)
2016-12-25 15:49:24.435 TransferInfoDemo[20133:1420624] getter
2016-12-25 15:49:24.435 TransferInfoDemo[20133:1420624] 0
2016-12-25 15:49:24.436 TransferInfoDemo[20133:1420624] getter
2016-12-25 15:49:24.436 TransferInfoDemo[20133:1420624] 0
2016-12-25 15:49:24.436 TransferInfoDemo[20133:1420624] setter
2016-12-25 15:49:24.438 TransferInfoDemo[20133:1420624] loadView
2016-12-25 15:49:24.438 TransferInfoDemo[20133:1420624] viewDidLoad
2016-12-25 15:49:24.438 TransferInfoDemo[20133:1420624] getter
2016-12-25 15:49:24.439 TransferInfoDemo[20133:1420624] 10

假如是ViewController正向傳值的話,則可以看出:
setter是在init完成之後,loadView之前調用的。
所以,初始化的時分,值不斷為0,在viewDidLoad中,賦值成功變為10。

我是demo

【iOS正向傳值之:結構辦法和property的區別】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved