모듈화와 프레임워크, 접근 제어에 대해 알아보자.
모듈화란?
모듈: 프로그램을 기능별로 분할한 논리적인 일부분
모듈이란 쉽게 설명하자면 코드의 묶음 단위이다.
하나의 프레임워크나 라이브러리, 애플리케이션을 모듈이라고 할 수 있다.
모듈화를 이해하기 위해서는 다음과 같은 예시를 들 수 있겠다.
하나의 회사가 다양한 앱을 만들어 공통적으로 사용하는 기능이 많을 수 있다.
예를 들어 카카오에서 만든 카카오톡, 카카오 버스나 카카오 택시, 카카오맵 등 여러 가지 앱이 있을 수 있는데
이 때 공통적으로 같아야 하는 컴포넌트들이 있을 수 있다. (예를 들면 팝업뷰가 띄워진 모습이라든지, 버튼의 모양 등)
이들을 한데 모아 하나로 관리할 수 있는 방법이 없을까? 라는 생각에서 만들어진 개념이 바로 모듈화이다.
즉, 만들어진 프로젝트를 여러 앱에서 활용할 수 있도록 '프레임워크'를 만들어 사용하게 된 것이다.
프레임워크와 라이브러리의 차이?
가장 큰 차이점은 코드를 변경할 수 있는지 여부이다.
UIKit 같은 프레임워크는 UILabel이라는 이름을 그대로 사용하여 코드를 작성해야 하지만,
OpenSource로 나와있는 라이브러리들은 내 입맛에 맞게 커스텀이 가능하다.
프레임워크를 통해 결합도는 낮추고, 응집도는 높이는 효과를 볼 수 있다.
- 응집도: 모듈 내부에서 하나의 목적을 가지고 연관되어 있는 정도
오늘은 접근 제어를 알아보기 위해 프레임워크를 만들어보았다.
접근 제어 Access Control
접근 제어란?
접근 제어란 말 그대로 코드에 접근할 수 있는 권한을 제어한다는 뜻이다.
코드끼리 상호작용을 할 때, 파일 간 또는 모듈 간에 접근을 제한할 수 있는 기능을 주고
허용된 기능만 사용하는 인터페이스를 제공해준다.
접근 제어는 외부에서 접근하여 수정하면 안 되는 코드가 있을 수 있기 때문에 사용한다 - 이를 '은닉화'라고 한다.
크게 5가지 종류로,
Open - Public - Internal - filePrivate - Private가 있다.
오른쪽으로 갈수록 가장 제한적인 형태를 가진다.
Open과 Public의 차이?
Open은 Public과 다르게 override될 수 있게 만들어 class만 가능하다고 보면 된다.
filePrivate - 같은 스위프트 파일에서 다른 클래스, 구조체를 사용할 수 있다. 다른 스위프트 파일에서는 불가능하다.
private - 같은 스위프트 파일에서 같은 타입일때 사용할 수 있다.
프레임워크 만들기
Alert을 띄우는 하나의 프레임워크를 만들어두고 여러 곳에서 쓰일 수 있도록 모듈화 실습을 진행하였다.
// Alert.Swift
import UIKit
extension UIViewController {
open func testOpen() { }
public func showSesacAlert(title: String, message: String, buttonTitle: String, buttonAction: @escaping ((UIAlertAction) -> Void)) {
let alert = UIAlertController(title: title, message: message, preferredStyle: .alert)
let cancel = UIAlertAction(title: "취소", style: .cancel)
let ok = UIAlertAction(title: buttonTitle, style: .default, handler: buttonAction)
alert.addAction(cancel)
alert.addAction(ok)
self.present(alert, animated: true)
}
internal func testInternal() { }
fileprivate func textFilePrivate() { }
private func testPrivate() { }
}
위와 같이 코드를 작성하고
프레임워크를 추가하고자 하는 파일에 Add Files를 한 뒤, 프레임워크 프로젝트 파일을 선택한 후 Targets - General에서 추가해준다.
이제 스위프트 파일에서 자유롭게 import 해준 뒤, 코드를 추가해주면 된다.
예를 들어
위와 같이 작성한 코드를 불러오기 위해 뷰컨트롤러에서 임포트 해준 뒤
사진과 같이 reuseIdentifier 를 적어주면 끝!!
새싹(SeSAC) 과정에서 배운 내용을 정리합니다.
출처
Swift Programming - 야곰
'공부하자! > iOS' 카테고리의 다른 글
[TIL] CodeBase UI + 코드 예제 (0) | 2022.08.18 |
---|---|
[TIL] 타입캐스팅 (0) | 2022.08.18 |
[iOS] TableView 테이블뷰에 대하여 (0) | 2022.08.11 |
[Swift] 자주 실수하는 오류 정리 (0) | 2022.08.11 |
[iOS] 화면 전환에 대하여 (0) | 2022.07.20 |