
AcknowList 라이브러리를 사용 할 때, 폰트와 배경색을 변경 하려면 라이브러리 내부의 코드 접근 수준을 변경 해야 한다는 사실을 깨달았다.
AcknowList 라이브러리 적용 방법 - 이전 글
발생 조건
AcknowViewController 클래스 사용 acknowledgement 프로퍼티에 접근 시도 'acknowledgement' is inaccessible due to 'internal' protection level원인 분석
라이브러리 구현 코드를 확인하면:

// 수정 전 원본 코드
open class AcknowViewController : UIViewController {
var acknowledgement: AcknowList?
}
acknowledgement 프로퍼티가 internal 접근 제어자로 선언됨 AcknowList 폴더 진입 AcknowViewController.swift 파일 선택수정 전:
open class AcknowViewController : UIViewController {
var acknowledgement: AcknowList?
}
수정 후:
open class AcknowViewController : UIViewController {
open var acknowledgement: Acknow?
}
| 수정 요소 | 내용 |
|---|---|
| 접근 수준 | internal → open |
| 상속 가능성 | 서브클래스에서 프로퍼티 오버라이드 가능 |
| 모듈 외부 접근 | 다른 모듈에서 프로퍼티 직접 참조 가능 |
class CustomAcknowViewController: AcknowViewController {
override func viewDidLoad() {
super.viewDidLoad()
// 이제 정상 접근 가능
print(acknowledgement.title)
// GitHub 저장소 주소 활용
if let repoURL = acknowledgement.repository {
fetchLicense(from: repoURL)
}
}
}
pod update 또는 패키지 재설치 시 코드 변경 사항 초기화됨Swift에서 외부 라이브러리의 접근 제어 문제는 프로퍼티 접근 수준 조정으로 효율적으로 해결한다.
이 방식은 특히 오픈소스 라이브러리를 커스터마이징할 때 유용하게 적용할 수 있다.
단, 라이브러리 업데이트 시 변경 사항이 초기화될 수 있음을 항상 염두에 둔다.
Change acknowledgement access level to open #128 - 나의 오픈 소스 수정 사항