그래프 강좌 실행시 Thread오류 납니다.

미해결질문
vampireahn 프로필

class ViewController: UIViewController {

@IBOutlet weak var graph1Height: NSLayoutConstraint!

@IBOutlet weak var graph2Height: NSLayoutConstraint!

@IBOutlet weak var graph3Height: NSLayoutConstraint!

@IBOutlet weak var graph4Height: NSLayoutConstraint!

@IBOutlet weak var graph5Height: NSLayoutConstraint!

override func viewDidLoad() {

super.viewDidLoad()

graph1Height = graph1Height.changeMultiplier(value: 0.9 as! CGFont) <- Thread 오류

graph2Height = graph2Height.changeMultiplier(value: 0.8 as! CGFont)

graph3Height = graph3Height.changeMultiplier(value: 0.7 as! CGFont)

graph4Height = graph4Height.changeMultiplier(value: 0.8 as! CGFont)

graph5Height = graph5Height.changeMultiplier(value: 0.5 as! CGFont)

}

}

extension NSLayoutConstraint {

func changeMultiplier(value: CGFont) -> NSLayoutConstraint {

    NSLayoutConstraint.deactivate([self])

let newConstraint = NSLayoutConstraint.init(item: self.firstItem!, attribute: self.firstAttribute, relatedBy: self.relation, toItem: self.secondItem, attribute: self.secondAttribute, multiplier: value as! CGFloat, constant: self.constant)

newConstraint.priority = self.priority

newConstraint.shouldBeArchived = self.shouldBeArchived

newConstraint.identifier = self.identifier

NSLayoutConstraint.activate([newConstraint])

return newConstraint

}

}

iOS Developer 프로필
iOS Developer 5달 전

안녕하세요

changeMultiplier 안에

DispatchQueue.main.async {

...

...

}

이렇게 main queue로 감싸고 실행해 보시면 스레드 문제는 해결될 겁니다.

vampireahn 프로필
vampireahn 5달 전

역시 스레드 에러 납니다 ㅠㅠ

iOS Developer 프로필
iOS Developer 5달 전

댓글다신 코드에 타입이 잘못되어 있네요

CGFont로 되어 있는 부분을 모두 CGFloat으로 변경하시면 해결될 겁니다.