23.08.29 화

2023. 8. 31. 01:46·Study/🌱 SeSAC

💡 addObserver 중복

Untitled.png

)

Untitled.png

addObserver는 한 번만 등록되도록 배치해야 한다.

viewWillAppear에 등록한다면 Observer 호출 횟수가 계속해서 증가한다.

중복 노티 방지를 체크해야 함!

✅ removeObserver

Untitled.png

✅ Notification Extension

Untitled.png

💡datePicker

✅ dataPickerView 코드 베이스 구성하기

Untitled.png

💡Protocol Delegate 값 전달

  1. protocol 구현

Untitled.png

 

2. delegate

Untitled.png

 

3. 전달할 값 매개변수로 넣기

Untitled.png

 

4. 전달 받은 값

Untitled.png

 

5. 화면 전환 시 값 전달

Untitled.png

 

 

✅ DateFormat Extension

Untitled.pngUntitled.pngUntitled.png


💡 Access Control

✔️ open > public > internal > fileprivate > private

코드에 대한 접근을 제한, 기본 인터페이스 제공

✅ Framework 생성

Untitled.png

기능을 의미 단위로 분리하여 사용할 수 있게 함

Untitled.png

 

Untitled.png

 

UIActivityViewController

Untitled.png

 

Untitled.pngUntitled.png

빼고싶은 기능을 선택할 수 있다.

 

✅ 프레임워크 / 라이브러리 사용

하나의 프로젝트에 여러 기능을 나눠서 구현할 때 사용한다.

⇒ 모듈과 모듈 간 결합도가 낮아진다.

⇒ 응집도가 높아진다. → 모듈 내부에 하나의 목적을 가진 기능들을 묶었기 때문

 

✅ 프레임워크 연결하기

Untitled.png

 

Untitled.png

 

Untitled.png

)

Untitled.png

 

Untitled.png

 

Untitled.png

framework에 구현한 코드를 사용할 수 있다.

💡 접근 제어자

  • 소스 파일 및 모듈의 코드에서 코드의 일부에 대한 접근을 제한하고자 할 때 사용한다.
  • 명시적으로 코드의 세부적인 구현은 숨길 수 있고, 기본 인터페이스를 지정할 수 있다.
  • 코드의 상세 내용은 숨기고, 코드의 불필요한 외부 노출을 명시적으로 제한함으로써 은닉화 특성 구현 가능하다.viewcontroller는 레이아웃에 관한 메서드를 다룰 일이 없지만, 호출이 가능하다.collectionViewLayout을 private으로 설정하면접근할 수 없는 레벨 오류 문구가 뜸private → 컴파일 시 다른 파일에서 로드가 될 가능성을 대비하지 않는다 ⇒ 빌드 타임을 줄일 수 있다.
  • private으로 설정 함으로써 컴파일 최적화 가능
    • Untitled.pngUntitled.pngUntitled.png
  • 접근 제어자는 모듈과 소스 코드 기준으로 접근 수준을 판단한다.

✅ 모듈

  • import를 통해 프로젝트에서 사용할 수 있는 형태의 코드 묶음 단위이다.
  • 우리의 프로젝트도 하나의 모듈, 프레임워크 하나를 하나의 모듈로 볼 수 있다.
  • 주로 open, public을 통해 접근할 수 있다.→ 외부 프레임워크에서 구현한 메서드 → open과 public에만 접근이 가능하다.
  • Untitled.png

✅ 소스 파일

  • 하나의 프로젝트 내에서 코드를 제어 할 경우
  • internal, fileprivate, private으로 소스파일에 대한 코드 제어를 할 수 있다.

 

💡 접근 레벨(Access Level)

📍 open

  • open으로 선언한 외부 모듈 코드는 우리의 프로젝트 내에서 사용할 수 있다.
  • open으로 선언한 클래스는 overriding이 가능함 → 상속이 가능 함 → class에서 사용
  • ⇒ open 접근 제어자는 class에서만 사용이 가능하다!
  • Untitled.png

📍 public

  • public은 다른 모듈에 접근할 때 주로 사용함
  • public으로 선언할 경우, 상속받을 수 없고, 오버라이딩도 할 수 없다.

📍 internal

  • 별도로 접근 제어를 선언하지 않는 경우 default로 설정되는 접근 레벨Untitled.png
  • 같은 모듈 내에서는 internal일 경우 어떤 파일에서도 접근이 가능하고, 클래스도 상속 받을 수 있다.
  • 외부 모듈에서는 접근할 수 없다.

 

Untitled.png

📍 fileprivate

  • 하나의 swift 파일 내부에서만 접근 가능
  • 다른 파일에서는 접근이 불가능하다.

📍 private

  • private으로 설정한 요소가 들어 있는 블록 내에서만 접근이 가능하다.

internal, private, fileprivate

→ 접근 레벨이 모듈을 벗어나지 못함, 주로 소스파일 단위에서 사용한다.


 

💡 closure 값 전달

1. 옵셔널로 클로저 선언

Untitled.png

2. 함수를 호출하여 값 전달

옵셔널 체이닝

Untitled.png

3. 클로저를 통해 값을 받아 기능 구현

Untitled.png

NavigationBarButton

Untitled.png

여러 데이터 전달하기

Untitled.png

)

Untitled.png


💡 WKWebView

bookmark

import UIKit
import WebKit


class ViewController: UIViewController, WKUIDelegate {
    
    var webView: WKWebView!
    
    override func loadView() {
        let webConfiguration = WKWebViewConfiguration()
        webView = WKWebView(frame: .zero, configuration: webConfiguration)
        webView.uiDelegate = self
        view = webView
    }


    override func viewDidLoad() {
        super.viewDidLoad()
        
        let myURL = URL(string:"https://www.apple.com")
        let myRequest = URLRequest(url: myURL!)
        webView.load(myRequest)
    }
}

URLRequest

웹에 대한 환경설정을 추가적으로 할 수 있는 기능

Untitled.png

웹 뷰에 툴바 기능 만들기

Untitled.png

)

Untitled.png

'Study > 🌱 SeSAC' 카테고리의 다른 글

23.08.31 목  (1) 2023.09.01
23.08.30 수  (0) 2023.09.01
23.08.28 월  (0) 2023.08.31
23.08.25 금  (0) 2023.08.31
23.08.24 목  (0) 2023.08.31
'Study/🌱 SeSAC' 카테고리의 다른 글
  • 23.08.31 목
  • 23.08.30 수
  • 23.08.28 월
  • 23.08.25 금
김졀니
김졀니
🍎 iOS 개발
  • 김졀니
    졀니의 개발 공부✨
    김졀니
  • 전체
    오늘
    어제
    • 분류 전체보기
      • iOS
        • Swift
        • UIKit&SwiftUI
        • RxSwift&Combine
        • WWDC
      • Study
        • 🚨 TroubleShooting
        • 🌱 SeSAC
  • 블로그 메뉴

    • 홈
    • Github
  • 인기 글

  • 최근 글

  • 태그

    위치 권한
    OperationQueue
    Drawing Cycle
    clipstobounds
    동시성프로그래밍
    Swift
    swiftdata
    observable
    actor
    traits
    의존성 주입
    RxSwift
    wwdc23
    layoutIfNeeded
    @PropertyWrapper
    CLLocation
    mapkit
    kingfisher header
    pointfree
    Sendable
    FileManager
    이미지 캐싱
    mainactor
    displayPriority
    swift concurrency
    Realm
    인앱리뷰
    ReactorKit
    ios
    concurrency
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
김졀니
23.08.29 화
상단으로

티스토리툴바