Swift 코드 뜯어보기 ( iOS )

김제형·2024년 11월 7일

코드 뜯어보기

이 글은 강의 중 do-it-swift 코드중 table view 실습 중 나온 코드를 하나하나 뜯어 보기 위한 글이다.

이 코드에 swift를 다루기 위한 코드의 집약체라고 들어서 뜯어보는 글이다.

  • 아래 코드는 테이블 뷰를 생성하고 각 셀을 동적으로 생성하며 셀에 해당하는 데이터를 표시해주기 위한 코드이다.
//전체 코드
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) 
-> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "myCell", for: indexPath)

        cell.textLabel?.text = items[(indexPath as NSIndexPath).row]
        cell.imageView?.image = UIImage(named: itemsImageFile[(indexPath as NSIndexPath).row])

        return cell
    }

첫번째 단락

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
  • 부모 클래스로 부터 상속 tableview라는 함수를 오버라이드를 즉 재정의 하여 사용하기 위한 코드이다.
  1. tableView 함수 오버라이딩
  2. table view의 외부 매개변수명 생략 / 자료형은 UITableView
  3. indexPath의 외부 매개변수는 cellForRowAt / 자료형은 IndexPath
  4. 리턴형 UITableViewCell

두번째 단락

let cell = tableView.dequeueReusableCell(withIdentifier: "myCell", for: indexPath)
  • 셀을 생성하고 사용하지 않을 때에는 큐에 넣어 대기 상태로 보관하고 재사용을 할 땐 새로 생성하는 것이 아닌 큐에 대기상태로 있는 셀을 다시 사용하여 데이터를 표시할 때 사용한다.

    이로 인해 메모리 의 관리를 편하게 할 수 있게 된다.

  1. 상수 cell 선언
  2. withIdentifier은 셀을 구분할 수 있게 해준다.
  3. 셀의 사용이 중지될 때 dequeueReuseableCell에 넣어둔다
  4. 셀의 사용을 다시 필요로 할 땐 이 큐에서 꺼내 행을 식별하는
    indexPath 경로를 찾아 화면에 데이터를 출력하게 된다.

세번째 단락

	cell.textLabel?.text = items[(indexPath as NSIndexPath).row]
    cell.imageView?.image = UIImage(named: itemsImageFile[(indexPath as NSIndexPath).row])
  • 셀을 불러올 때 그 셀에 있는 text, image를 읽어서 각 text, image에 넣어 화면을 출력하게 된다.
  1. cell 에 옵셔널 체이닝으로 textLable과 imageView에 text와 image의 값이 존재하게 될 경우에만 저장하게 된다.
  2. text와 image에 값이 존재하면 각 매개변수로 값이 들어간다.
  3. cell에 있는 text와 image를 indexPath 경로에 각 행에 맞춰 출력하게 된다.

    옵셔널 체이닝 - 값이 존재할 때만 코드를 실행
    ex) ?. 으로 표기 한다.

네번째 단락

return cell
    }
  • 화면에 맞는 cell을 반환한다.

코드 : 이지스퍼블리싱 "do-it-swift"
참고 : chat gpt

profile
개발자 지망생

0개의 댓글