Waar te kleine subklasse van NSObject, afzonderlijk .h bestand te plaatsen?

Dit is waarschijnlijk een domme vraag, maar ik ben nieuw bij het programmeren en vroeg me af wat ppl meestal doet.
Meestal gebruik ik afzonderlijke .h- en .m-bestanden voor al mijn klassen.
Ik heb een kleine klasse die slechts enkele eigenschappen bevat die een subklasse van NSObject is.
Ik gebruik deze klasse alleen om een ​​UITableView te vullen. Ik zie dat als ik het allemaal in een van de gerelateerde .m-bestanden zet, niemand dit kan zien tenzij ik de .m opneem die ik niet wil doen vanwege een kringverwijzing. Dus stop ik het gewoon in het .h-bestand? Of zet ppl het altijd in een apart .h- en .m-bestand voor elke klas? Bedankt.

0

4 antwoord

Zet gewoon het .h-bestand in, tenzij je wilt dat de klasse privé is (of bepaalde delen ervan). Een goede manier om dingen uit andere klassen te verbergen, is door een categorie in het .m-bestand te definiëren.

2
toegevoegd
Ik denk dat je bedoelt class extensie (naamloze categorieën). Er is een klein maar belangrijk verschil: het is mogelijk om eigenschappen in klasse-extensies te declareren, maar niet in reguliere (benoemde) categorieën.
toegevoegd de auteur vikingosegundo, de bron

In dergelijke gevallen vind ik mezelf vaak de kleine "helper" -klasse in het .m-bestand voor de klasse die het ondersteunt, bijvoorbeeld een van het .m-bestand van de controllerklassen.

Ik plaats de @interface -definitie vóór de code die deze gebruikt, en de @implementatie onderaan.

Op die manier verminder ik de snijplotter van kleine bestanden ten koste van de leesbaarheid van de top van mijn .m-bestand.

1
toegevoegd

Ik zou kiezen voor het apart zetten van klassen in afzonderlijke bestanden - het maakt het navigeren door een onbekend project dus een stuk eenvoudiger.

Met een moderne IDE is het extra bestand geen gedoe.

1
toegevoegd

Zet de interface in de header en de implementatie in het .m-bestand, net als elke andere klasse. Als u al uw code in de koptekst plaatst, is dit precies hetzelfde als al uw code in een M-bestand plaatsen dat u wilt importeren. Er kunnen bepaalde configuraties van code zijn waar het toevallig werkt, maar het is een fragiel ontwerp zonder veel voordeel. Als je het zijn eigen dossier gaat geven, ga dan helemaal en organiseer het goed.

0
toegevoegd