Huis Sociale Media Hoe protocollen te gebruiken voor het definiëren van methoden voor iOS-apps - dummies

Hoe protocollen te gebruiken voor het definiëren van methoden voor iOS-apps - dummies

Video: Learning iOS: Create your own app with Objective-C! by Tianyu Liu 2024

Video: Learning iOS: Create your own app with Objective-C! by Tianyu Liu 2024
Anonim

Een protocol definieert reeksen methoden die door elke klasse kunnen worden geïmplementeerd. Beschouw protocollen als definiërende interfaces die klassen moeten implementeren. Protocollen worden vaak gebruikt om de interface voor gemachtigde objecten te specificeren.

Met de protocolfunctie kunt u voorkomen dat subklassen moet worden geforceerd om polymorfe klassen te maken. Objective-C (in tegenstelling tot C ++) staat niet toe dat een klasse meerdere superklassen heeft. Protocollen zijn daarom een ​​essentieel kenmerk in Objective-C, omdat er geen sprake is van meerdere overerving.

Wanneer een klasse de methoden implementeert in een protocol, wordt gezegd dat de klasse conform is voor het protocol.

De definitie van een protocol lijkt op de definitie van een interface voor een klasse. Een protocol heeft echter geen bovenliggende klasse- of instantievariabelen. Hier is een voorbeeld van een protocoldefinitie (afdrukbaar) van het postfix-rekenmachineprogramma:

@protocol afdrukbaar - (ongeldig) printMe; // Ik kan @required weglaten, omdat dit de standaard @optional - (NSString *) printMeToString is; -d Met de komst (en inderdaad met veel tamtam) van Objective-C 2. 0 kunnen protocolmethoden worden vereist (standaard) of optioneel.

Hier is de verklaring van de StackOfInteger dat het protocol wordt geïmplementeerd: @interface StackOfInteger: NSObject … -d
Dit is de implementatie van het protocol in de klasse StackOfInteger:

@implementation StackOfInteger; … Andere StackOfInteger-methoden … /////////// Methoden voor het implementeren van het afdrukbare protocol //////////// - (void) printMe {int k, stackCount = [aantal elementen]; NSLog (@ "Stack-> Last>% dlast); for (k = 0; k% @

Merk op dat de methode printMeToString niet is geïmplementeerd omdat deze optioneel is. 

< ! --1 ->

Een programma kan testen of een object voldoet aan een protocol De volgende code bevat voorbeelden van deze test (uit het hoofdprogramma van het monster):

printf ("Testen conformiteit met protocolsn "); if ([myStack conformToProtocol: @protocol (Printable)]) {printf (" Using protocol methodsn "); [myStack printMe];} else {NSLog (@" Object voldoet niet aan protocol% @ n ", @protocol (afdrukbaar));} id someObject = [[PostfixCalculator alloc] initWithExpression: @ "44 55 *"]; if (! [someObject conformToProtocol: @protocol (Printable)]) {NSLog (@ "Object voldoet niet aan protocol ");}

Omdat het myStack-object overeenkomt met het protocol, worden de methoden printMe en printMeToString aangeroepen. Aangezien someObject (wat type-id is om het voorbeeld zinvoller te maken) niet voldoet aan het afdrukbare protocol, voldoet de test voor conformiteit mislukt.

Je kunt ook testen of er een optionele methode bestaat met de methode respondsToSelector.

U kunt van een klasse een protocol maken door eenvoudig de methoden te implementeren die door dat protocol zijn gedefinieerd. Dat wil zeggen, u hoeft het protocol niet in zijn interface aan te geven. Hoewel de klasse de protocollen implementeert, zal

niet zich conformeren aan het protocol en zal de vorige conformantietest mislukken.

Hoe protocollen te gebruiken voor het definiëren van methoden voor iOS-apps - dummies

Bewerkers keuze

Een overzicht van de hoofdsystemen van het lichaam voor het EMT-onderzoek - dummies

Een overzicht van de hoofdsystemen van het lichaam voor het EMT-onderzoek - dummies

U moet bekijk verschillende orgaansystemen voor het EMT-examen. Elk bestaat uit een reeks organen en structuren, die op hun beurt een unieke reeks functies hebben. Als EMT zou je kennis moeten hebben van een paar structuren. Hier is een overzicht van elk systeem. Misschien wilt u een moment nemen om ...

Anatomische verschillen bij kinderen die u moet weten voor het EMT-onderzoek - dummies

Anatomische verschillen bij kinderen die u moet weten voor het EMT-onderzoek - dummies

Er zijn verschillende belangrijke anatomische verschillen tussen kinderen en volwassenen die van invloed kunnen zijn op uw beoordeling en behandeling van het EMT-onderzoek en in een reële situatie. Deze verschillen zijn meer uitgesproken bij jongere kinderen (baby tot kleuterleeftijd); ze beginnen te verdwijnen als de kinderen ouder worden naar schoolgaande leeftijd en adolescentie. Tegen de tijd dat ze ...

Elementen van het EMT Computer Exam - dummies

Elementen van het EMT Computer Exam - dummies

Het cognitieve gedeelte van het National Registry of Emergency Medical Technicians (NREMT ) examen is een computer-adaptieve test (CAT) die continu je prestaties evalueert terwijl je elke vraag beantwoordt. Hier zijn een paar dingen waar u aan moet denken voordat u het medisch-medische noodhulsexamen (EMT) aflegt: als u het examen aflegt, blijft de computer voortdurend ...

Bewerkers keuze

TASC-wiskunde-examen: converteren van eenheden - dummies

TASC-wiskunde-examen: converteren van eenheden - dummies

Als u een probleem tegenkomt op het TASC-wiskunde-examen dat conversie inhoudt van eenheden, is het belangrijk dat u de relaties tussen metingen bijhoudt. Het is bijvoorbeeld algemeen bekend dat er 12 inch op 1 voet is, wat een eenheidsfactor wordt genoemd. Eenheidsfactoren bestaan ​​uit twee metingen die ...

TASC voor Dummy's Cheat Sheet - dummies

TASC voor Dummy's Cheat Sheet - dummies

In veel staten heeft de TASC-test de GED vervangen. Studenten die in die staten wonen die hun middelbare schoolequivalentie nastreven, kunnen niet langer het GED-examen afleggen; ze moeten in plaats daarvan de TASC-test afleggen. Dus om je voor te bereiden op je studie, moet je weten hoe de TASC-test is gestructureerd en wat deze ...

TASC-wiskunde-examen - grafische lineaire functies - dummies

TASC-wiskunde-examen - grafische lineaire functies - dummies

Sommige vragen over het TASC-wiskundetest hebben betrekking op lineaire functies. Een lineaire functie vertegenwoordigt een relatie tussen twee variabelen waarin de ene variabele de andere beïnvloedt. In een lineaire functie wordt x meestal beschouwd als de onafhankelijke variabele en y als de afhankelijke variabele (x heeft invloed op y). De onafhankelijke variabele (x) loopt horizontaal, ...

Bewerkers keuze

Xcode-instrumenten gebruiken om gegevens te verzamelen voor iOS-apps - dummies

Xcode-instrumenten gebruiken om gegevens te verzamelen voor iOS-apps - dummies

Xcode biedt een ontwikkelaarstool die dynamische tracering en profilering van iOS-code mogelijk maakt om u te helpen het gezamenlijke gedrag van zowel de app-code als het besturingssysteem te begrijpen. Het wordt Instrumenten genoemd. Ga als volgt te werk om dit hulpprogramma te gebruiken: Kies Xcode → Ontwikkelaarshulpmiddel openen → Instrumenten. Het venster Instrumenten verschijnt met een verzameling sjablonen. You ...

Hoe protocollen te gebruiken voor het definiëren van methoden voor iOS-apps - dummies

Hoe protocollen te gebruiken voor het definiëren van methoden voor iOS-apps - dummies

Een protocol definieert sets van methoden die door elke klasse kunnen worden geïmplementeerd. Beschouw protocollen als definiërende interfaces die klassen moeten implementeren. Protocollen worden vaak gebruikt om de interface voor gemachtigde objecten te specificeren. Met de protocolfunctie kunt u voorkomen dat subklassen moet worden geforceerd om polymorfe klassen te maken. Objective-C (in tegenstelling tot C ++) ...

SDK-hulpmiddelen gebruiken voor dagelijkse ontwikkeling - dummies

SDK-hulpmiddelen gebruiken voor dagelijkse ontwikkeling - dummies

De SDK-hulpmiddelen zijn de bouwstenen die je gebruikt bij het ontwikkelen van Android-apps. Met nieuwe functies die zijn ingepakt in elke release, kunt u zich ontwikkelen voor de nieuwste versie van Android. Zeg hallo tegen de emulator Google biedt niet alleen de hulpmiddelen die u nodig hebt om apps te ontwikkelen, maar ook een geweldige kleine emulator om uw app te testen. ...