2012-04-18 5 views
9

mia altra programmatore scaricare questo codice dalla reteQuali sono le cause della categoria sta implementando un metodo che verrà implementato anche dalla sua classe primaria?

#import "UIImage+Alpha.h" 

// Private helper methods 
@interface UIImage() 
- (CGImageRef)newBorderMask:(NSUInteger)borderSize size:(CGSize)size; 
@end 

@implementation UIImage (Alpha) 

ho ottenuto l'errore: Quali sono le cause Categoria sta attuando un metodo che sarà anche implementata per la sua classe primaria?

Cerco NewBorderMask in tutti i miei file e la parola appare solo 3 volte.

viene dichiarata solo una volta vale a dire il

@interface UIImage() 
- (CGImageRef)newBorderMask:(NSUInteger)borderSize size:(CGSize)size; 
@end 

attuati una volta cioè a

#pragma mark - 
#pragma mark Private helper methods 

// Creates a mask that makes the outer edges transparent and everything else opaque 
// The size must include the entire mask (opaque part + transparent border) 
// The caller is responsible for releasing the returned reference by calling CGImageRelease 
- (CGImageRef)newBorderMask:(NSUInteger)borderSize size:(CGSize)size1 { 
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray(); 

e chiamato una volta

CGImageRef maskImageRef = [self newBorderMask:borderSize size:newRect.size]; 

è, come ci doppia dichiarazione.

Quindi qual è il problema.

risposta

27

I sono l'autore originale dello code e la risposta di Aadhira non è corretta. Il nome della categoria per questo metodo non deve essere modificato in "Alfa", in quanto il metodo deve essere privato e non parte dell'estensione.

Per eliminare l'avviso, la soluzione migliore è assegnare alla categoria privata un nome univoco, come "PrivateAlpha".

Per ulteriori dettagli, vedere this discussion.

+0

Attualmente sto usando la libreria (grazie, grazie, grazie) e ho trovato questo mentre tentavo di rimuovere l'avviso. Qualche motivo per cui hai lasciato l'avviso lì? – soemarko

+0

commento l'estensione della classe e tutti gli avvisi sono andati. Sembra che il nome delle categorie non sia la ragione. – jAckOdE

9

Sede, mentre si dichiara la categoria, è come

@interface UIImage() 

Ma in esecuzione, è come

@implementation UIImage (Alpha) 

Così dichiararla come segue:

@interface UIImage (Alpha) 
+0

Penso di sapere perché il ragazzo l'ha fatto. L'interfaccia @ UIImage (alpha) è nei file .h –

5

Ho appena tolto tutto questo po 'dal mio file .m:

@interface UIImage() 
- (CGImageRef)newBorderMask:(NSUInteger)borderSize size:(CGSize)size; 
@end 

LLVM 4.1 compilatore non sembra preoccuparsi più.

Problemi correlati