第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何初始化相互依賴的屬性

如何初始化相互依賴的屬性

慕少森 2019-06-01 14:39:51
如何初始化相互依賴的屬性我想要一張照片移到底部。如果我按下按鈕,圖片應(yīng)該向下移動(dòng)1。我添加了圖片和按鈕:var corX = 0var corY = 0var runter: UIButton = UIButton.buttonWithType(UIButtonType.System) as UIButtonvar  image = UIImage(named: "panzerBlau.jpg");var panzer = UIImageView(frame: CGRectMake(corX, corY, 30, 40));    //override func viewDidLoad() {     super.viewDidLoad()     panzer.image = image;    //    self.view.addSubview(panzer);    //     runter.frame = CGRectMake(100, 30, 10 , 10)     runter.backgroundColor = UIColor.redColor()     view.addSubview(runter)     runter.addTarget(self, action: "fahren", forControlEvents:UIControlEvents.TouchUpInside)}至少我在函數(shù)“fahren”中說把圖片向下移動(dòng)1。func fahren(){     corY += 1     panzer.frame = CGRectMake(corX, corY, 30, 40) //    self.view.addSubview(panzer);}所以我的問題是:這些corx和cory的東西有幾個(gè)錯(cuò)誤。沒有它們,它工作的完美,但它比一個(gè)單一用途按鈕。錯(cuò)誤是:ViewController.Type沒有一個(gè)名為corX的成員,而ViewController.Type沒有一個(gè)成員名為panzer,在這里我得到了我所做的/顯示在哪些行中的錯(cuò)誤。PS:我使用Xcode Beta 5下面是沒有其他任何內(nèi)容的完整代碼:import UIKitclass ViewController: UIViewController {     var corX = 0     var corY = 0     var runter: UIButton = UIButton.buttonWithType(UIButtonType.System) as UIButton     var image = UIImage(named: "panzerBlau.jpg");     var panzer = UIImageView(frame: CGRectMake(corX, corY, 30, 40));     override func viewDidLoad() {         super.viewDidLoad()             panzer.image = image;             self.view.addSubview(panzer);         runter.frame = CGRectMake(100, 30, 10 , 10)         runter.backgroundColor = UIColor.redColor()         view.addSubview(runter)         runter.addTarget(self, action: "fahren", forControlEvents:UIControlEvents.TouchUpInside)     }     func fahren(){         corY += 100         panzer.frame = CGRectMake(corX, corY, 30, 40)         self.view.addSubview(panzer);     }}
查看完整描述

3 回答

?
慕絲7291255

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊

var corX = 0var corY = 0var panzer = UIImageView(frame: CGRectMake(corX, corY, 30, 40))

問題是SWIFT默認(rèn)初始化器不能引用另一個(gè)屬性的值,因?yàn)樵诔跏蓟瘯r(shí),該屬性還不存在(因?yàn)閷?shí)例本身還不存在)?;旧?,在panzer的默認(rèn)初始化程序。self.corXself.corY-但沒有self因?yàn)?/trans>self正是我們正在創(chuàng)造的東西。

解決方法之一是使初始化程序懶惰:

class ViewController: UIViewController {
    var corX : CGFloat = 0
    var corY : CGFloat = 0
    lazy var panzer : UIImageView = UIImageView(frame: CGRectMake(self.corX, self.corY, 30, 40))
    // ...}

這是合法的,因?yàn)?/trans>panzer直到稍后第一次被實(shí)際代碼引用時(shí)才被初始化。到那時(shí),self它的性質(zhì)是存在的。


查看完整回答
反對(duì) 回復(fù) 2019-06-01
?
幕布斯6054654

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個(gè)贊

您的受撫養(yǎng)財(cái)產(chǎn)需要:

  1. lazy

  2. 明示

    : Type

  3. 使用

    self.

    訪問其他屬性

例子:

let original = "foo"


// Good:

lazy var depend: String = self.original


// Error:

     var noLazy: String = self.original // Error: Value of type '(NSObject) -> () -> URLData' has no member 'original'

lazy var noType         = self.original // Error: Value of type '(NSObject) -> () -> URLData' has no member 'original'

lazy var noSelf: String = original      // Error: Instance member 'original' cannot be used on type 'YourClass'


查看完整回答
反對(duì) 回復(fù) 2019-06-01
  • 3 回答
  • 0 關(guān)注
  • 548 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)