728x90
안녕하세요.
개발할 때 escaping closure에서 [weak self]를 빼먹는 경우가 종종 있지 않나요??
이런 것도 SwiftLint가 검사해 줬으면 참 좋겠다... 라고 생각을 했는데 SwiftLint 0.54.0 기준으로 아직까진 그런 규칙은 없더라구요ㅠㅠ
완벽하진 않지만 SwiftLint 커스텀 룰을 활용해서 closure에서 [weak self]를 사용하지 않았을 때 에러를 반환하는 방법을 찾았어요.
yml 파일에 아래처럼 커스텀 룰을 정의하면, closure에서 [weak self]가 없으면 에러를 반환합니다.
단, 검사가 가능한 상황이 한정적이에요ㅠㅠ 아래 2가지 조건 모두 해당되는 경우에만 trigger 됩니다.
[closure [weak self] trigger 조건]
(1) 파라미터가 있는 closure만 trigger 가능
- 만일, 파라미터가 없는 closure라면 closure 내부에서 self를 capture 해도 trigger 안됨.
(2) closure가 시작되고 나서 바로 self를 capture 해야 함.
- 만일, closure 시작하자마자 self.xxx 대신 다른 코드가 들어간다면 trigger 안됨.
완벽하진 않지만, 나름 잘 사용할 것 같아서 공유해봅니다ㅎㅎ
# 참고
이번 글은 여기서 마무리.
반응형
'TroubleShooting' 카테고리의 다른 글
[SwiftUI] Image에 List 구분자 적용 (0) | 2024.02.14 |
---|---|
[SwiftUI] 자식뷰 NavigationBar 공백 제거 (0) | 2024.02.14 |
[SPM] The remote repository could not be accessed. 해결방법 (0) | 2023.12.13 |
[Xcode] Unit test 빌드 시 Testing에서 멈춰있는 이슈 해결방법 (0) | 2023.12.13 |
[Xcode 15] Linker command failed with exit code 1 (use -v to see invocation) 해결방법 (0) | 2023.12.12 |