TIL(Today I Learned)
6월 8일(화)
학습내용
- 코테 스터디
- 프로그래머스 - “방금 그 곡”
- String의 replacingOccurrences(of:with:)를 이용하여 특정 문자만 교체할 수 있다. 예를 들어, “BAM”이라는 문자열에 replacingOccurrences(of:”A”, with:”I”)를 실행 하면 “BIM”을 반환한다.
- 프로그래머스 - “방금 그 곡”
- 면접 스터디
- ARC
- Weak vs Unowned
- Weak은 retain count를 증가시키지 않는다. 만약 인스턴스가 해제되면 Weak 변수는 nil로 초기화된다.
- Unowned도 마찬가지로 retain count를 증가시키지 않는다. 하지만 인스턴스가 해제되도라도 nil로 초기화 시키지 않고 그대로 참조 값을 갖고 있는다.
- 라자냐가 얘기하길 “인스턴스를 참조하는 모든 Weak 변수를 nil로 초기화주는 것은 오버헤드가 될 수 있다.”
- Weak은 참조하는 인스턴스가 lifetime이 짧을 때 사용하는 것이 적절하다. 왜냐하면 인스턴스가 해제되면 Weak변수에 nil을 할당해주기 때문이다.
- 하지만 Unowned는 인스턴스의 lifetime이 동일하거나 더 길때 사용해야한다. 인스턴스가 해제되더라도 Unowned 변수는 계속 참조하고 있으므로 잘못된 참조로 인한 에러를 막으려면 인스턴스의 lifetime이 더 길어야한다.
- Weak vs Unowned
- ARC
문제점/고민한점
- “방금 그 곡” 문제를 풀 때, 분명 모든 경우를 다 고려해서 코드를 짠거 같은데 테스트케이스의 30%를 통과하지 못했다.
해결방법
- 문자열을 먼저 치환시킨 다음에 전체 멜로디 문자열을 만들었어야 했는데, 반대로 하고 있었다. 앞으로는 쉬운 테스트케이스를 가지고 내가 짠 코드를 머릿속에서 실행시키면서 잘 작동하는지 확인 해야겠다.
참고
- 프로그래머스 - “방금 그 곡”: https://programmers.co.kr/learn/courses/30/lessons/17683