Private methodes in Cocoa
2 april 2006 - 20:22   
geplaatst door: JanV
ik ben net gestart met ontwikkeling in Cocoa en ik heb een controller-class gemaakt met daarin enkele instantievariabelen  en publieke methoden. Tot zover geen probleem, al deze zaken zijn goed gedocumenteerd in de verschillende boeken over Cocoa.

Nu wil ik echter een methode maken voor intern gebruik binnen dezelfde class (een private methode neem ik aan?) en daarover is nagenoeg niks te vinden.
Ik nam aan dat zo'n methode niet moet gedeclareerd worden in de header-file en dat ik ze oproep door een message naar self te sturen [self mySubroutine]. Maar dan krijg ik een waarschuwing van de compiler:
"Method 'mySubroutine' my not respond..."

Help, wat doe ik fout??
:wacko:  

Private methodes in Cocoa
3 april 2006 - 07:26    reactie #2
geplaatst door: mennodeij
Als je mySubroutine definiëert voordat je 'm aanroept dan krijg je die foutmelding niet:

-(void)myPrivateSubroutine
{
//code
}

-(void)myPublicSubroutine
{
 [self myPrivateSubroutine];
}

Overigens is het een waarschuwing, geen error. De code zal gewoon worden aangeroepen, alleen kan de compiler dat tijdens het compilen niet zeker weten, vandaar de waarschuwing.

(Bewerkt door mennodeij om 11:44, 3-04-2006)

Vu-ja-dé: the odd feeling nothing has ever happened before...
Private methodes in Cocoa
3 april 2006 - 07:53    reactie #3
geplaatst door: JanV
Alvast bedankt voor de reacties.
Is het mogelijk een forward declaration van zo'n private methode te doen,
ongeveer zoiets als je doet met "@class..." voor een klasse?
Private methodes in Cocoa
3 april 2006 - 09:56    reactie #4
geplaatst door: BraboMac
Volgens mij moet je gewoon de regle die anders in de header file staat gewoon onder #import zetten. Het maakt de compiler niet uit of je dat in de header file hebt staan of in de implementatie file.
Big Nerd Ranch blogs for Mac developers (and Nerds)
Er bestaan slechts 10 soorten mensen op deze aarde: Zij die binair kunnen rekenen en zij die dat niet kunnen.
Private methodes in Cocoa
3 april 2006 - 11:02    reactie #5
geplaatst door: limmelambok
Methods die niet in de header staan, kan je toch oproepen vanuit andere klassen dacht ik. De compiler zal weliswaar grommen, maar tijdens het uitvoeren wordt de methode toch lekker opgeroepen. Ik dacht dat het definiëren van een categorie van je object in z'n eigen implementatie bestand de standaard manier was om private methodes te simuleren (in het .mm bestand dus, niet in het .h bestand). 'k Heb het zelf wel nooit uitgeprobeerd wegens het sop de kool niet waard.
MacBookPro 2Ghz
G5 Dual*2.7
Private methodes in Cocoa
3 april 2006 - 18:07    reactie #6
geplaatst door: JanV

Citaat
BraboMac om 9:56, 3-04-2006
Volgens mij moet je gewoon de regle die anders in de header file staat gewoon onder #import zetten. Het maakt de compiler niet uit of je dat in de header file hebt staan of in de implementatie file.

Maar dan staat die wel zonder @interface-derective. Geeft dat geen probleem?