App maken: ook jij kunt het leren!

 

de iOS Academie Forums

Forums - App-ontwikkeling - Swift en iOS: wat is een private, public en Internal

Wouter  Wouter heeft nog geen Studiekaart. Klokje12 jul 2015, 16:42
Avatar
Avatar
Berichten:4


Bij heel veel open source projecten zie je private, public en internal voor een func, variable of class staan. Maar wat doen deze dingen nou eigenlijk?

Ik heb zelf al heel veel opgezocht en apple legt het op deze pagina uit, maar ik ben niet zo goed in me engels (vandaar dat ik bij de ios academie zit). dus ik snap niet wat ze daar uitleggen.

 

Met vriendelijke groeten,

 

Wouter

Reageer


Admin Roelf  Klokje12 jul 2015, 17:13
Avatar


Wouter, ik publiceer hier eerdaags een blog-artikel over. Alvast een gedeelte eruit:

 In Swift-programmacode kun je de woorden public, private en internal tegenkomen bij de declaraties van functies, methodes, variabelen en properties. Maar wat betekenen die woorden nu precies en wanneer gebruik je ze?

Alle drie de woorden hebben met toegang te maken: ze bepalen voor wie (of wat) een functie of variabele beschikbaar is. Voordat ik je uitleg hoe dit precies werkt, eerst een andere definitie: het woord module.

In principe zul je altijd twee soorten Swift-code schrijven:

  • Een kant-en-klare applicatie die op een device (of op een Mac) kan worden uitgevoerd;
  • Een library, ook wel framework genoemd: een bibliotheek met functies en/of classes die door anderen kan worden gebruikt. Een voorbeeld van zo’n framework is UIKit, waarin zich classes bevinden om buttons, labels, tabellen enzovoort op het scherm van je iPhone of iPad te toveren.

Alle programmacode (en andere dingen, zoals het Storyboard) van zowel een kant-en-klare app als van een framework wordt gebundeld in een zogenaamde module. Vóór de naam van een variabele of functie in zo’n module kan één van de woorden public, private en internal staan. Ze betekenen dan het volgende:

  • private: dit is meest beperkte toegangsniveau: de bewuste variabele of functie is alleen toegankelijk in het bestand zelf en niet voor de rest van de module. Een voorbeeld: als een variabele als private var test123 is in het bestand testcode.swift is gedeclareerd, is hij alleen in dat bestand toegankelijk en niet in andere bestanden in dezelfde module.
  • internal: dit is (op enkele uitzonderingen na) het standaard toegangsniveau van elke variabele of functie in een module. De bewuste variabele of functie is toegankelijk op elke andere plaats in de module, maar niet erbuiten.
    Een voorbeeld: de variabele die als internal var intern123 of als var intern123 is gedeclareerd, is toegankelijk voor alle bestanden in de huidige module.
  • public: dit is het minst beperkte toegangsniveau: dergelijke functies en variabelen zijn binnen de module zelf toegankelijk, maar ook binnen modules die met de huidige module werken (zoals bij framework-modules vaak gebeurt). De methode die in de module mijnFuncties met public func test() is gedeclareerd, is dus toegankelijk vanuit alle modules die de mijnFuncties-module gebruiken.

Samenvattend:

private gebruik je dus voor variabelen en functies die je voor de buitenwereld wil verbergen en die alleen maar nodig zijn in het .swift-bestand waarin ze zijn gedeclareerd.

internal geeft aan dat variabelen en functies in de gehele module beschikbaar zijn.

public geeft aan dat variabelen en functies in de gehele module beschikbaar zijn en in alle modules die die module hebben geïmporteerd.

Reageer

Goed advies! 2 personen vinden dit goed advies.