¿Qué significa la palabra clave `open` en Swift y en qué se diferencia de `public`?
¡Hola a todos! Empecé a estudiar Swift recientemente y me encontré con confusión al trabajar con modificadores de acceso. En la documentación de Apple dice que `open` es el nivel de acceso más alto, pero no entiendo del todo en qué se diferencia de `public`.
Estoy escribiendo una pequeña biblioteca para trabajar con la red. Aquí hay un ejemplo de mi clase:
```swift
public class NetworkManager {
public func fetchData() {
print("Fetching data...")
}
}
```
Todo funciona, pero leí que para las clases que pueden ser heredadas desde otro módulo, se debe usar `open`. Intenté reemplazar `public` por `open`:
```swift
open class NetworkManager {
open func fetchData() {
print("Fetching data...")
}
}
```
No noté diferencias en el comportamiento. Por favor, indíquenme:
1. ¿Cuál es la diferencia real entre `open` y `public`?
2. ¿Cuándo se debe usar `open` y cuándo es suficiente `public`?
3. ¿Por qué Apple introdujo la palabra clave `open` si ya existía `public`?
Estaré agradecido por su