Vra

Ek skryf 'n geval metode in ClassName.m:

-(void)methodName:(paraType)parameter
{...}

En noem dit die gebruik van

[self methodName:parameter]; 
A waarskuwing sal pop-up, maar die kode loop nog suksesvol.

Is dit omdat ek nie 'n geval van die klas geskep? Waarom die metode loop nog normaal? En wat is die regte manier om self metode roep om die waarskuwing te voorkom?

Was dit nuttig?

Oplossing

Wel die eerste stap in hulp ontvang met 'n waarskuwing sou wees om die waarskuwing te plaas:)

Ek neem aan dit is iets omtrent 'n onbekende boodskap? As dit so is dit omdat hoewel die samesteller sien die oproep om "methodName" dit weet nie of dit is geldig vir die voorwerp of nie.

Ek sou raai jou kode lyk;

-(void) someFunc
{
  ...
  [self methodName:parameter]; 
  ...
}

-(void)methodName:(paraType)parameter
{
...
}

Jy kan óf;

a) Plaas die 'methodName' funksie vroeër in die lêer sodat die samesteller dit gesien het voordat dit gebruik word in oproepe.

b) verklaar dit in die klas koppelvlak. Bv.

// Foo.h
@interface Foo {
...
}
-(void) methodName:(paraType)parameter;
@end

Ander wenke

Wat is die waarskuwing wat jy kry?

Het jy 'n definisie van die metode in jou kop lêer?

Die sintaksis wat jy gebruik is die propper manier van die roeping metode op self.

Die metode sal werk nie, want Objective-C metodes opgelos word op run-time. Ek verwag dat die waarskuwing wat jy kry is iets soos "Object Foo kan nie reageer op -methodName:" en dan is dit vir jou vertel dat dit in gebreke die terugkeer tipe te id. Dit is omdat die samesteller 'n verklaring of definisie van -methodName: teen die tyd dat dit stel die kode waar jy dit noem nie gesien het nie. Om die waarskuwing te verwyder, verklaar die metode in óf koppelvlak die klas of 'n kategorie op die klas.

As jy kry 'n waarskuwing is dit dalk wees omdat die handtekening metode is nie in 'n koppelvlak.

@interface foo ....

-(void)method;

Sodra die implementering geskrywe die waarskuwing moet weggaan, want dit is nie die eerste keer dat die opsteller het die metode gesien. Dit sal werk sonder om dit te doen, maar die waarskuwing boodskap is irriterende.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top