💡 addObserver 중복
)
addObserver는 한 번만 등록되도록 배치해야 한다.
viewWillAppear에 등록한다면 Observer 호출 횟수가 계속해서 증가한다.
중복 노티 방지를 체크해야 함!
✅ removeObserver
✅ Notification Extension
💡datePicker
✅ dataPickerView 코드 베이스 구성하기
💡Protocol Delegate 값 전달
- protocol 구현
2. delegate
3. 전달할 값 매개변수로 넣기
4. 전달 받은 값
5. 화면 전환 시 값 전달
✅ DateFormat Extension
💡 Access Control
✔️ open > public > internal > fileprivate > private
코드에 대한 접근을 제한, 기본 인터페이스 제공
✅ Framework 생성
기능을 의미 단위로 분리하여 사용할 수 있게 함
UIActivityViewController
빼고싶은 기능을 선택할 수 있다.
✅ 프레임워크 / 라이브러리 사용
하나의 프로젝트에 여러 기능을 나눠서 구현할 때 사용한다.
⇒ 모듈과 모듈 간 결합도가 낮아진다.
⇒ 응집도가 높아진다. → 모듈 내부에 하나의 목적을 가진 기능들을 묶었기 때문
✅ 프레임워크 연결하기
)
framework에 구현한 코드를 사용할 수 있다.
💡 접근 제어자
- 소스 파일 및 모듈의 코드에서 코드의 일부에 대한 접근을 제한하고자 할 때 사용한다.
- 명시적으로 코드의 세부적인 구현은 숨길 수 있고, 기본 인터페이스를 지정할 수 있다.
- 코드의 상세 내용은 숨기고, 코드의 불필요한 외부 노출을 명시적으로 제한함으로써 은닉화 특성 구현 가능하다.viewcontroller는 레이아웃에 관한 메서드를 다룰 일이 없지만, 호출이 가능하다.collectionViewLayout을 private으로 설정하면접근할 수 없는 레벨 오류 문구가 뜸private → 컴파일 시 다른 파일에서 로드가 될 가능성을 대비하지 않는다 ⇒ 빌드 타임을 줄일 수 있다.
- private으로 설정 함으로써 컴파일 최적화 가능
- 접근 제어자는 모듈과 소스 코드 기준으로 접근 수준을 판단한다.
✅ 모듈
- import를 통해 프로젝트에서 사용할 수 있는 형태의 코드 묶음 단위이다.
- 우리의 프로젝트도 하나의 모듈, 프레임워크 하나를 하나의 모듈로 볼 수 있다.
- 주로 open, public을 통해 접근할 수 있다.→ 외부 프레임워크에서 구현한 메서드 → open과 public에만 접근이 가능하다.
✅ 소스 파일
- 하나의 프로젝트 내에서 코드를 제어 할 경우
- internal, fileprivate, private으로 소스파일에 대한 코드 제어를 할 수 있다.
💡 접근 레벨(Access Level)
📍 open
- open으로 선언한 외부 모듈 코드는 우리의 프로젝트 내에서 사용할 수 있다.
- open으로 선언한 클래스는 overriding이 가능함 → 상속이 가능 함 → class에서 사용
- ⇒ open 접근 제어자는 class에서만 사용이 가능하다!
📍 public
- public은 다른 모듈에 접근할 때 주로 사용함
- public으로 선언할 경우, 상속받을 수 없고, 오버라이딩도 할 수 없다.
📍 internal
- 별도로 접근 제어를 선언하지 않는 경우 default로 설정되는 접근 레벨
- 같은 모듈 내에서는 internal일 경우 어떤 파일에서도 접근이 가능하고, 클래스도 상속 받을 수 있다.
- 외부 모듈에서는 접근할 수 없다.
📍 fileprivate
- 하나의 swift 파일 내부에서만 접근 가능
- 다른 파일에서는 접근이 불가능하다.
📍 private
- private으로 설정한 요소가 들어 있는 블록 내에서만 접근이 가능하다.
internal, private, fileprivate
→ 접근 레벨이 모듈을 벗어나지 못함, 주로 소스파일 단위에서 사용한다.
💡 closure 값 전달
1. 옵셔널로 클로저 선언
2. 함수를 호출하여 값 전달
옵셔널 체이닝
3. 클로저를 통해 값을 받아 기능 구현
NavigationBarButton
여러 데이터 전달하기
)
💡 WKWebView
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
웹에 대한 환경설정을 추가적으로 할 수 있는 기능
웹 뷰에 툴바 기능 만들기
)
'iOS > 🌱 SeSAC' 카테고리의 다른 글
23.08.31 목 (0) | 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 |