2
respostas

A var body: some View também precisa ser pública?

Seção 4, atividade 3. Eu fiquei confuso e fiz alguns testes. Segundo eles, é possível a var body ser publica sem a struct ser, mas não foi possível a struct ser publica sem que a var body também seja. Na avaliação deu por correta a forma que não funcionaria no código. Teria algum esclarecimento/ correção para esse ponto? Obs: Xcode15.0, Swift 5.0

2 respostas

Olá, Jonattan! Tudo bem?

No Swift, quando estamos lidando com módulos, a visibilidade das classes, structs e suas propriedades é crucial para garantir que o código seja acessível onde necessário. No seu caso, estamos falando sobre a criação de uma View que será acessada fora do módulo onde ela foi definida.

  1. Struct Pública: Para que a PetServiceView seja acessível fora do módulo onde foi definida, a struct precisa ser pública. Isso é porque, por padrão, os elementos em Swift têm visibilidade internal, o que significa que só podem ser acessados dentro do mesmo módulo.

  2. Var body: No caso da var body, ela não precisa ser explicitamente pública porque ela está dentro de uma struct que já é pública. Quando você define a struct como pública, suas propriedades e métodos são acessíveis, a menos que sejam explicitamente marcados como private.

Portanto, a alternativa correta é a B, onde a struct é pública, permitindo que a PetServiceView seja utilizada fora do módulo. A var body não precisa ser pública porque ela já está dentro de uma struct pública.

Espero ter ajudado. Conte sempre com o apoio do fórum :)

Um abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado

Sua explicação faz total sentido, mas não sei o motivo de na prática não funcionar dessa forma. Se eu remover opublic e deixar apenas var body: some View {, ocorre o erro abaixo sugerindo correção.

Property 'body' must be declared public because it matches a requirement in public protocol 'View'