본문 바로가기
🍎 iOS/문제해결

iOS공부, 나의 흔한 오류 기록.(Swift 외않되?)

by @Eddy 2022. 3. 27.
728x90

https://www.boostcourse.org/mo326/lecture/16849?isDesc=false

 

iOS 앱 프로그래밍

부스트코스 무료 강의

www.boostcourse.org

야곰 인강의 '오토 레이아웃 구현(코드)'에서 많이 애먹었다.

나는 분명!! 똑같이 작성한 것 같은데 무려 18개의 오류코드가 발생했기 때문이다.

흔히 겪은 코드 오류는

1. Invalid redeclaration of 'ViewController'
2. Value of type 'ViewController' has no member 'addPlayPauseButton'
3. Only instance methods can be declared @IBAction
4. Expected '}' in class

 

하는 종류가 대부분이었다.

 

내가 해결했던 방법은, 처음부터 끝까지 코드를 재점검하는 것이라고 하면 해결법이 아니지만. 

먼저 야곰이 제공한 코드와 내 코드를 비교 분석했다. 왜냐하면, 야곰의 코드를 복사하면 오류가 거의 없기 때문.

 

해결방법

 

1번 문제.

 Invalid redeclaration of 'ViewController'  ('ViewController'의 잘못된 재선언)

 - 혹시 'ViewController'의 Class가 어딘가 똑같이 선언되고 있지는 않은지 확인해라.

 - 나의 경우, 코드를 마구잡이로 수정해볼 예정이었기에 new file을 사용해 swift파일을 하나 더 만들었는데, 그때 전체 코드를 복사해서 그 파일에 붙여 넣기를 했다.

- 같은 Class가 2개의 swift파일에 동시에 선언되기 때문에 문제가 생긴 것.

- 한쪽을 지워주면 문제 해결.

 

2,3,4번 문제

2. Value of type 'ViewController' has no member 'addPlayPauseButton'
   ('ViewController' 유형의 값에 'addPlayPauseButton' 멤버가 없습니다.)
3. Only instance methods can be declared @IBAction
   (@IBAction은 인스턴스 메소드만 선언할 수 있습니다.)
4. Expected '}' in class
   (클래스에 '}'가 필요하다.)

 - 사실 중괄호( {} ) 하나 또는 그 이상이 없었던 것.

 - 중간의 코드 어느 하나에서 중괄호를 빼먹었다면 뒤의 모든 코드에 무조건 오류가 난다.

 - 2번의 경우는 사실 이해하지 못했다. 아래에 있는 수많은 코드 중 왜 이것만 문제일까?

    단순히 self가 들어갔다기에는 그 아래에 있는 코드들도 self가 많이 들어있는데..

 - 3번의 경우, Fix를 하게 되면 Remove @IBAction이 되기 때문에 코드가 더 망가지게 된다.

 - 4번의 경우, 클래스에 {}가 필요하다는 말은 Class에 {}를 빼먹었을 수도 있고, 그 사이에 있는 어떤 코드에서 빼먹었을 수도 있다는 말.

 

비록 2번은 온전히 이해하지 못했지만, 2,3,4번 모두 묶음만 잘해주면 해결된다는 사실.

 

 

** 추가 ** 

- 2번: {}가 닫히지 않아 func을 찾지 못해 발생했던 오류.

- 1년이 지난 후에 과거의 글을 읽으니 이렇게 모르는 게 많았구나 싶다.

반응형

댓글