Je suis perplexe ... J'ai cette fonction "colorWithHexString" ... quand je l'inclue dans le viewcontroller qui l'appelle alors ça marche très bien. Mais quand je le déplace vers une classe "BSJax" séparée et que je l'appelle avec le même paramètre d'entrée, il lance une erreur de sélecteur non reconnue. Voici l'appel:Malheurs de sélecteur non reconnus
BSjax *bsjax = [BSjax new];
NSString *hexString = [NSString stringWithString:@"CCCCFF"];
[self.view setBackgroundColor:[bsjax colorWithHexString:hexString]];
Je suis sûr qu'il ya quelque chose sur la façon dont j'appelle la fonction qui l'empêche de travailler comme méthode bsjax. Tout commentaire sera apprécié.
BSjax.h comprend:
+ (UIColor *)colorWithHexString:(NSString *)stringToConvert;
... et BSjax.m comprend:
+ (UIColor *)colorWithHexString:(NSString *)stringToConvert
{
NSString *cString = [[stringToConvert stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];
// String should be 6 or 8 characters
if ([cString length] < 6) NSLog(@"colorWithHexString called with parameter < 6 characters in length");
// strip 0X if it appears
if ([cString hasPrefix:@"0X"]) cString = [cString substringFromIndex:2];
if ([cString length] != 6) NSLog(@"colorWithHexString called with parameter != 6 characters in length");
// Separate into r, g, b substrings
NSRange range;
range.location = 0;
range.length = 2;
NSString *rString = [cString substringWithRange:range];
range.location = 2;
NSString *gString = [cString substringWithRange:range];
range.location = 4;
NSString *bString = [cString substringWithRange:range];
// Scan values
unsigned int r, g, b;
[[NSScanner scannerWithString:rString] scanHexInt:&r];
[[NSScanner scannerWithString:gString] scanHexInt:&g];
[[NSScanner scannerWithString:bString] scanHexInt:&b];
return [UIColor colorWithRed:((float) r/255.0f)
green:((float) g/255.0f)
blue:((float) b/255.0f)
alpha:1.0f];
}
poster votre définition de méthode pour colorWithHexString et s'il vous plaît poster où il est défini (quel fichier) – coneybeare
@coneybeare ... k, déclaration et définition ajoutée ... ce qui est curieux, c'est que lorsque je déplace la fonction vers le viewcontroller lui-même (sans changer quelque chose ... eh bien, je le change pour être une méthode privée au lieu de public ... ça fonctionne comme un charme) – codemonkey
Je suis très mal à comprendre les pointeurs et la gestion de la mémoire et je me demande si je suis censé conserver mon La variable hexString ou quelque chose? – codemonkey