아삭아삭 iOS 개발

[TIL] 2022.07.28 (SeSAC iOS) 본문

TIL(Today I Learned)

[TIL] 2022.07.28 (SeSAC iOS)

바닐라머스크 2022. 7. 28. 23:46

 

오늘 공부한 내용들을 내가 잊지 않기 위해 기록합니다.

틀린 내용이 있을 수 있는 점 참고 부탁드립니다 :)

 

■ 수업 복습

(필기정리  + 추가내용 등)

1. protocol

  • 특정 이벤트들을 효율적으로 관리하기 위함을 목적으로 대리자에게 이벤트 처리를 맡기는 것
    : 특정 이벤트가 발생하면 위임된 delegate가 해당 메소드를 실행시키는 delegate pattern을 구현함
  • 규약들을 정리한 프로토콜을 채택하는 것은 일종의 자격증을 부여하는 것과 같다고 할 수 있음
  • 각 프로토콜별 구현해야 하는 메서드는 단순히 선언 정도로만 구성되어 있음
    상세한 구현 코드들은 해당 프로토콜을 채택한 각각의 클래스, 열거형, 익스텐션, 구조체 에서 이루어짐
  • 채택된 프로토콜은 해당 클래스 전체를 책임지는 것이 아니라 관련이 있는 객체(혹은 메서드)에 한하여 작동함.
  • 필요성
    : 구현하는 페이지의 수와 코드 양이 많아지면 코드 관리에 불편함이 생김
    → 페이지별로 동일하게 반복되는 사항들을 구조화시킬 수 있음
    → 오타방지
    → 타인이 내 코드를 보았을 때 이해도를 높일 수 있음
  • 사실 swift의 각종 기능들을 자세히 뜯어보면 타입이나 클래스로 정해진 프로토콜들을 채택한 것임!
    (참고 : https://developer.apple.com/documentation/swift/collection)

 

  • property requirements
    - 프로토콜 명세서에서는 중괄호 미사용
    - 프로토콜 명세서에서는 단순한 선언 정도로만 구성 가능
      : 메서드명, 파라미터명, 반환 데이터 타입 정의 가능 (단, 상세 실행코드나 기본값 설정 불가)

 

  • method requirements
    - 프로토콜 명세서에서는 저장/연산프로퍼티 구분 안함
      → 구현할 때 저장/연산프로퍼티 중 필요한 기능으로 구분하여 구현 가능
    - 프로토콜 명세서에서는 단순한 선언 정도로만 구성 가능
      : 변수명, 데이터 타입, 읽기-쓰기 여부 (명세서에 제시된 읽기-쓰기 여부가 최소충족 조건임!)
    - 항상 var로 선언함

 

  • optional requirements
    - (class에 한하여) 명세서에 ‘@objc optional’가 있을 경우, 해당 메서드는 선택적으로 구현 가능

 

  • anyobjects
  •  

 

2. iOS Framework의 프로토콜

  • CaseIterable 프로토콜
    - 열거형 값들을 배열처럼 순회 가능하도록 함
    - 배열 메서드 사용 가능 ex) allCases

 

  • Hashable 프로토콜
    - 정수 hash값 제공
    - Dictionary의 key값들은 hashable 해야 함

 

 3. UIToolBar

  • fixed space bar button item
  • flexible space bar button item

 

4. UITextView

  • TextView는 (TextField 와 달리) placeholder 설정도, 액션 연결도 없음
  • inputview
  • uitextviewdelegate

 

5. UISearchBar - UISearchBarDelegate

(내용정리중 - 별도 포스트로 구분 예정)

 

6. UIPickerView - UIPickerViewDelegate, UIPickerViewDatasource

(내용정리중 - 별도 포스트로 구분 예정)

 

7. WKWebView

(내용정리중 - 별도 포스트로 구분 예정)

 

8. App Transport Security Settings

  • 앱이 서버에게 전송하는 데이터에 대해 보안을 설정하는 것
  • (보안상 안전한 HTTPS와 달리) HTTP의 경우, 외부 서버와 통신하기 위해서는 별도 설정이 필요함 → info.plist에서 설정 가능

■ (과제) 웹뷰 컨트롤러 만들어보기

webview 연습

 

  • 툴바 디자인, 웹뷰기능 구현
  • App Transport Security Setting의 속성을 살펴보고 info.plist에 Allow Arbitrary Load를 Yes로 설정
    http로 시작하는 URL도 웹뷰에서 띄워줄 수 있도록 구현

info.plist에 별도 추가

 

(전체 코드 : https://github.com/minhye9731/WebViewPractice)

 

 

'TIL(Today I Learned)' 카테고리의 다른 글

[TIL] 2022.07.30~31 (SeSAC iOS)  (0) 2022.07.31
[TIL] 2022.07.29 (SeSAC iOS)  (0) 2022.07.29
[TIL] 2022.07.22 (SeSAC iOS)  (0) 2022.07.22
[TIL] 2022.07.21 (SeSAC iOS)  (0) 2022.07.21
[TIL] 2022.07.20 (SeSAC iOS)  (0) 2022.07.20