본문 바로가기

Swift/Error & Issue

[iOS] unrecognized selelctor sent to class 에러 잡기

에러 마주한 상황

여기서 biiou 또는 biiou 옆 프로필 클릭시 상세 프로필로 들어가는 기능을 구현하고 있었어요. 

 

 

 둘 다 같은 함수를 통해서 상세 프로필 화면을 불러오는 액션 메서드를 사용했어요. 근데 버튼일 때는 성공적으로 되지만 프로필을 눌렀을 때는 unrecognized selelctor sent to class 에러가 발생했습니다.

 

 

에러가..

 

버튼의 경우 addTarget을 통해서

프로필의 경우 UITapGestureRecognizer(target: self, action: #selector(didTapUsername))를 프로필 인스턴스에 부여 했습니다.

같은 함수인데 프로필을 눌렀을 때만 unrecognized selelctor 에러가 떴는데 계속해서 생각하니 오류의 원인을 알게 되었습니다. 게시물 컨트롤을 구현할 때 초기에 likeButton의 경우 addTarget()를 통해 액션 메서드를 사용했기에 게시물 컨트롤러의 초기화가 끝난 이후에 부착을 했습니다. 반면 profileImageView의 경우 그냥 프로필만 변경하면 됬기에 lazy키워드를 사용하지 않고 게시물 컨트롤러가 초기화 되는 시점에 같이 초기화를 시켰습니다. 이것이 문제였습니다. 

 

 profileImageView가 초기화 되는 시점은 아직 클래스를 사용할 수 없는 init()시점이어서 static 이 아닌 @objc didTapUsername(sender:)를 이용하려 했기 때문에 이 에러가 발생했습니다. 그래서 profileImageView를 lazy var 로 변경했고 해결했습니다.

 

 

끝!!