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이 더 길어야한다.

문제점/고민한점

  • “방금 그 곡” 문제를 풀 때, 분명 모든 경우를 다 고려해서 코드를 짠거 같은데 테스트케이스의 30%를 통과하지 못했다.

해결방법

  • 문자열을 먼저 치환시킨 다음에 전체 멜로디 문자열을 만들었어야 했는데, 반대로 하고 있었다. 앞으로는 쉬운 테스트케이스를 가지고 내가 짠 코드를 머릿속에서 실행시키면서 잘 작동하는지 확인 해야겠다.

참고