TIL

25일차 TIL

h_luz 2024. 4. 1. 21:36

 

Swift 알고리즘 및 언어공부

 

53. 명예의 전당 (1)

 

배열 삭제하는 기능이 필요한 것 같아서 찾아본 사이트 (참조)

 

removeFirst()

: 배열에 맨 마지막 부분의 값을 삭제

 

import Foundation

func solution(_ k:Int, _ score:[Int]) -> [Int] {
    var arr = [Int]()
    var result = [Int]()
    for s in score {
        arr.append(s)
        if arr.count > k {
            arr.sort(){ $0 > $1 }
            arr.removeFirst()
        }
        result.append(arr.min()!)
    }
    return result
}

 

 


 

과제 피드백 및 수정

ㅠㅠ 피드백이 너무 따뜻하고, 유익했다 ! 

 

사실 cell 추가하고, 삭제하는 부분에서 취소선이 남는 거ㅠ 제출할 때쯤 깨달아서 어떻게 해결해야 할지 몰랐는데,,ㅠ

이렇게 알려주시니까 단번에 이해가 간다..

 

사실 이런 오류가 있었음..ㅎㅎ

myTableViewCell.swift

튜터님 말대로 prepareForReuse에 myLabel에 attributedText의 값을 nil로 해서 지워주면,

이렇게 오류가 없어진 것을 알 수 있다 !

 

셀의 재사용에 대해서는 저번주 금요일에 공부했다고 생각했는데, 아직 먼 것 같다.. 

그리고 git 커밋하는 거는.. ㅠ 연습이 더 필요할 것 같다.

 


모의 면접

 

1. 모든 ViewController 객체의 상위 클래스는 무엇이고, 그 역할은 무엇인지 아는 만큼 설명해 보세요

모든 View Controller의 상위클래스는 UIViewController입니다.

뷰 내용 업데이트,

뷰에서 발생한 사용자 상호작용에 대한 응답을 수행,

뷰의 크기를 조정하고, 전체 인터페이스 레이아웃 관리,

앱 내의 다른 개체들을 조정

 

* 상속에 관련한 내용을 이야기하면 좋다.

    - 모든 ViewController는 UIViewController를 상속받습니다. UIViewController는 모든 View Controller에 공통으로 작동하는         행동들이 정의돼있고, 이를 상속받아 메서드를 추가하거나 override 할 수 있습니다.

 

2. 옵셔널과 옵셔널 해제에 대해 아는 만큼 설명해 보세요

옵셔널은 안정성을 높이기 위한 타입.

- nil로 값이 없음을 표현해서 값이 없을 때, 오류를 방지할 수 있다.

옵셔널 해제

- 옵셔널 타입은 자체적으로 사용할 수 없습니다. 연산이나 결합 같은 것이 지원이 안됨

옵셔널을 해제해주어야 사용할 수 있는데 옵셔널 해제에는 2가지 방법이 있습니다.

해제 방법으로는 강제 옵셔널 해제 - 뒤에 !를 붙이는 방법 (그러나 nil 값을 해제하면 프로그램이 강제로 종료되는 문제 발생)

옵셔널 바인딩 - if let, guard let을 써서 nil값인지 아닌지 확인해서 옵셔널 추출

이 있다.

 

* 안정성

* if let과 guard let의 차이점은 ?

    - 범위의 차이 ( if는 지역변수로만 사용 가능, guard는 else return이 함께 붙어서 더 넓은 범위의 내용을 갖고있다. )

* 프로그램 강제 종료 -> 런타임 오류

 

3. UIKit에서 스토리보드로 UI구현하기와 코드로 UI구현 시 각각의 장단점을 설명해보세요

스토리보드

눈으로 보여지기 때문에 결과물을 예측하기가 쉽다.

협업 시 StoryBoard 충돌하는 문제가 발생할 수 있고, xcode가 무거워집니다.

코드

결과물 예측이 어렵지만,

협업 충돌 위험도가 낮고, xcode가 가벼워집니다.

autolayout이 복잡하다.

 

* 스토리보드 협업 시 충돌이 일어나는 이유는 ? 

    코드 사용 시 수정 전과 후에 코드를 비교하면 왜 충돌이 일어났는 지 알기 편하지만,

    스토리보드로 수정을 해서 일어난 충돌은 해결하기가 어렵다.

 

 


 

Git 협업에 사용하기 (참고노션)


 

UICollectionView

: 정렬된 데이터 항목 컬렉션을 관리하고, 사용자 정의 가능한 레이아웃을 사용하여 표시하는 개체

 

나는 결제화면을 담당하게 되었는데, 그냥 테이블뷰로 구현할 수 있을 것 같기도 한데,,

collectionView 공부해보고 싶기도 해서 일단 적어봤다.

 

그리고 같은 팀원분께서 xib 커스텀 셀로 만들면 간편하다고 하셔서 한 번 해보려고 한다 !

 

https://unclean.tistory.com/32

 

[Swift] UICollectionView에 .xib커스텀 셀을 적용해보기

저번에 테이블 뷰에 커스텀 셀을 적용하는 방법을 해보았었는데 이번에는 컬렉션 뷰를 사용해서 같은 방식으로 커스텀 셀을 적용해 보겠습니다. 컬렉션 뷰는 테이블 뷰보다 좀 더 난이도가 있

unclean.tistory.com

 

근데 파일 만드는 것부터 골머리를 앓아서.. storyboard를 만들어야 하는데,, xib 파일 만들어놓고, 스토리보드로 사용하려고 하니까 안돼서 ㅠㅠ 나는 왜 항상 이렇게 쓸데없는 것들로 시간을 잡아먹을까. . . . ㅠ (그래도 실수하다보면 ,, ㅠ 배우는 게 있겠지.. )

 

여튼 오늘 팀 프로젝트를 시작했는데, branch와 git 에 대해서 좀 알게되어서 좋았다.

협업을 위해서 git에 대해 익숙해지는 것이 좋을 것 같다.. 더 공부해야겠다 !

 

'TIL' 카테고리의 다른 글

27일차 TIL  (3) 2024.04.03
26일차 TIL  (2) 2024.04.02
24일차 TIL  (2) 2024.03.29
23일차 TIL  (1) 2024.03.28
22일차 TIL  (2) 2024.03.27