Section 7/71 menit
7. Ringkasan
7. Ringkasan
Hierarchy Lengkap Swift Access Control
swift
┌─────────────────────────────────────────────────────────────────────┐
│ open — subclassable dari luar module │
├─────────────────────────────────────────────────────────────────────┤
│ public — accessible dari luar package │
├─────────────────────────────────────────────────────────────────────┤
│ package ★ NEW — accessible semua module dalam satu Package.swift │
├─────────────────────────────────────────────────────────────────────┤
│ internal — accessible dalam satu module (DEFAULT) │
├─────────────────────────────────────────────────────────────────────┤
│ fileprivate — accessible dalam satu file │
├─────────────────────────────────────────────────────────────────────┤
│ private — accessible dalam declaration + same-file extension │
└─────────────────────────────────────────────────────────────────────┘
Decision Guide
swift
Siapa yang perlu mengakses ini?
├── Hanya deklarasi saat ini → private
├── Hanya file saat ini → fileprivate
├── Hanya module saat ini → internal (default, tidak perlu tulis)
├── Semua module dalam Package.swift yang sama → package ★
├── Pengguna library/SDK tapi tidak bisa di-subclass → public
└── Pengguna library/SDK dan bisa di-subclass → open
Kapan package vs Alternatif
| Situasi | Rekomendasi |
|---|---|
| Cross-module helper dalam satu SDK | package |
| End-user facing API | public / open |
| Test helper yang di-share antar test target | package |
| Implementation detail satu module | internal (default) |
| Single-module app | internal (package tidak berguna) |
| Workaround untuk desain modul yang buruk | Desain ulang modul-nya |
Dibuat: 2026-05-08 | Swift 6.0 | Swift Package Manager