[TIL] 모듈화, 프레임워크, 접근 제어

모듈화와 프레임워크, 접근 제어에 대해 알아보자.

모듈화란?

모듈: 프로그램을 기능별로 분할한 논리적인 일부분

모듈이란 쉽게 설명하자면 코드의 묶음 단위이다.

하나의 프레임워크나 라이브러리, 애플리케이션을 모듈이라고 할 수 있다.

 

모듈화를 이해하기 위해서는 다음과 같은 예시를 들 수 있겠다.

하나의 회사가 다양한 앱을 만들어 공통적으로 사용하는 기능이 많을 수 있다.

예를 들어 카카오에서 만든 카카오톡, 카카오 버스나 카카오 택시, 카카오맵 등 여러 가지 앱이 있을 수 있는데

이 때 공통적으로 같아야 하는 컴포넌트들이 있을 수 있다. (예를 들면 팝업뷰가 띄워진 모습이라든지, 버튼의 모양 등)

이들을 한데 모아 하나로 관리할 수 있는 방법이 없을까? 라는 생각에서 만들어진 개념이 바로 모듈화이다.

즉, 만들어진 프로젝트를 여러 앱에서 활용할 수 있도록 '프레임워크'를 만들어 사용하게 된 것이다.

 

프레임워크와 라이브러리의 차이?

가장 큰 차이점은 코드를 변경할 수 있는지 여부이다.

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