Swift의 Xcode 6 -β5에서 발생한 오류 해결 방안에 대한 의문점
참고로 글은 2014년 8월 12일 현재의 검증 결과로 앞으로의 업무 보증은 전혀 무책임하다.
풀리지 않는 의문 중 하나로
Xcode6-β5
이후 발생하기 시작한 오류.문제 오류
문제 오류 중 하나
Overiding declaration requires an 'override' keyword
하층 방법init(frame:CGRect)
에 override
수식자의 오류를 더해 주십시오
단순히 Xcode6-β5
이후override
부터 수식자가 필요할 뿐이다.
이것도 특별히 어려운 것은 아니니 이해할 수 있다.
문제 2
Class 'X' does not implement its superclass's required members
문제는 required
하는 방법이나 부족한 잘못이다.
자류UIView
에서 실시해야 할 방법이 있는 것 같다.
이에 따라 대책으로 다음과 같은 다른 사이트에서 실시required init(coder aDecoder: NSCoder!)
된 이니셜의 대응 방법이 발견됐다.곤란할 때 Stack Over Flow씨.required init(coder aDecoder: NSCoder!) {
super.init(coder: aDecoder)
}
실수가 사라지다.
MyUIView.swiftimport UIKit
class MyUIView:UIView
{
required init(coder aDecoder: NSCoder!) {
super.init(coder: aDecoder)
}
override init(frame: CGRect)
{
super.init(frame: frame)
}
}
메시지
그리고 마침내, 여기서부터 주제입니다.
잘못된 문제에 대한 의문
여기까지만 해도 잘못된 처리 방법에 대해'경사스럽다'고 답했지만, 자신의 이해가 부족해 왜 실수가 일어나지 않는지 이해할 수 없었다.
그래서 나는 이 문제에 대해 진일보한 의문과 흥미를 가지게 되어 두뇌를 검증하고 정리하기 시작했다.
Swift Protocol에 대한 간단한 정리
스위프트 계승에 대한 간단한 정리.
수식자 Required 및 override
프로토콜의 구조와 계승 메커니즘을 이해함으로써 계승 주제UIView
에서 오류와 오류를 피하는 메커니즘을 깨달았다.
MyUIView.swiftimport UIKit
class MyUIView:UIView
{
//protocol NSCodingのイニシャライザ
required init(coder aDecoder: NSCoder!) {
super.init(coder: aDecoder)
}
//class UIViewのイニシャライザ
override init(frame: CGRect)
{
super.init(frame: frame)
}
}
원래 자신이 설치한 init(frame: CGRect)
이니셜은 UIView
류init(frame: CGRect)
를 다시 쓴 것이다.
오류MyUIView
를 피하기 위해 클래스에 추가required init(coder aDecoder: NSCoder!)
는NSCoding
프로토콜에서 선언한 초기화기입니다.
한 마디로 하면 자신이 이해한 내용을 정리하면 알파벳의 스타일을 완전히 이해할 수는 없지만 다음과 같은 내용을 설명할 수 있다.
required init(coder aDecoder: NSCoder!) {
super.init(coder: aDecoder)
}
import UIKit
class MyUIView:UIView
{
required init(coder aDecoder: NSCoder!) {
super.init(coder: aDecoder)
}
override init(frame: CGRect)
{
super.init(frame: frame)
}
}
그리고 마침내, 여기서부터 주제입니다.
잘못된 문제에 대한 의문
여기까지만 해도 잘못된 처리 방법에 대해'경사스럽다'고 답했지만, 자신의 이해가 부족해 왜 실수가 일어나지 않는지 이해할 수 없었다.
그래서 나는 이 문제에 대해 진일보한 의문과 흥미를 가지게 되어 두뇌를 검증하고 정리하기 시작했다.
Swift Protocol에 대한 간단한 정리
스위프트 계승에 대한 간단한 정리.
수식자 Required 및 override
프로토콜의 구조와 계승 메커니즘을 이해함으로써 계승 주제
UIView
에서 오류와 오류를 피하는 메커니즘을 깨달았다.MyUIView.swift
import UIKit
class MyUIView:UIView
{
//protocol NSCodingのイニシャライザ
required init(coder aDecoder: NSCoder!) {
super.init(coder: aDecoder)
}
//class UIViewのイニシャライザ
override init(frame: CGRect)
{
super.init(frame: frame)
}
}
원래 자신이 설치한 init(frame: CGRect)
이니셜은 UIView
류init(frame: CGRect)
를 다시 쓴 것이다.오류
MyUIView
를 피하기 위해 클래스에 추가required init(coder aDecoder: NSCoder!)
는NSCoding
프로토콜에서 선언한 초기화기입니다.한 마디로 하면 자신이 이해한 내용을 정리하면 알파벳의 스타일을 완전히 이해할 수는 없지만 다음과 같은 내용을 설명할 수 있다.
init
는 설치 클래스에 required
수식자init
는 설치(자)류에 override
수식자더욱 진일보한 의문을 향해
하지만 여기서는 문외한 같은 새로운 의문이 나온다.
확실히 UIViewController
도 NSCoding
협의를 계승했죠?
바로 그렇게 물려받고 있다.
그렇다면 왜 MyUIViewController
와 MyUIView
가 NSCoding
협의를 계승했는데도 같은 오류가 발생하지 않았을까?예전에는 부모님이 거의 다르셨죠?이렇게 끝났습니다.
같은 협의NSCoding
가 이루어졌지만 View
클래스에서 오류가 발생했고 ViewController
클래스에서 오류가 발생하지 않았다는 것은 설명할 수 없다.
뭐, 문법과 언어 규범을 이해하는 사람은 논리적으로 설명할 수 있지만 자신은 항상 고집을 부리며 신경을 쓴다.w
그래서 일부러 ViewController
반의 알파벳을 시험해 봤어요.
오류가 발생했습니다.override
이에 따라 Class 'X' does not implement its superclass's required members
에도 필살UIViewController
의 이니셜이 추가됐다.required init(coder aDecoder: NSCoder!) {
super.init(coder: aDecoder)
}
실수가 사라지다.
주안점
조사 결과 이번 상황에서 NSCoding
와UIViewController
가 상속받은 수량이 많은 협의 중 UIView
협의에만 초서NSCoding
가 존재하는 것으로 나타났다.
required init(coder aDecoder: NSCoder!) {
super.init(coder: aDecoder)
}
조사 결과 이번 상황에서
NSCoding
와UIViewController
가 상속받은 수량이 많은 협의 중 UIView
협의에만 초서NSCoding
가 존재하는 것으로 나타났다.init
(알파벳 중복 시도 63;)이 경우 프로토콜에 발표된 초기화기override
를 실현해야 한다.required
가 되고 잘못된 표면화될 수 있다.앞으로 선언
Xcode-β5
의 합의를 사용하면 init
의 골치 아픈 기술이 될까?언어 규범을 더 정확하게 이해할 수 있다면 논리적으로 설명할 수 있을 것 같지만, 우선 머릿속의 정리와 비망록으로 쓰고 또 쓰라고 했습니다.
그나저나 좀 더 쉽게 설명할 수 있는 사람이 있다면 지적하거나 교수해 주세요.
Lovely Swift!!!
Reference
이 문제에 관하여(Swift의 Xcode 6 -β5에서 발생한 오류 해결 방안에 대한 의문점), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tajihiro/items/d4d6bd06e63d24d206e4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)