Ich habe eine Klassenfunktion (deklariert und implementiert) in einer Klasse MyUtils. Wenn ich diese Funktion aufrufen, stürzt meine App ab. Im Debugger habe ich einen Haltepunkt bei der ersten Aktion der Funktion "theFunction". Und dieser Haltepunkt wird nie erreicht. HierObjective-C und Cocoa: Absturz beim Aufruf einer Klassenfunktion ohne Eingabe der Funktion
ist der Code:
// =================================================================================================
// MyUtils.m
// =================================================================================================
+ (NSString*) changeDateFormat_fromFormat:(NSString*)sourceFormat sourceDateString:(NSString*)sourceDateString destFormat:(NSString*)destFormat {
if (sourceDateString == nil) return (nil); **<-- breakpoint here**
NSDate* aDate = [NSDate dateFromString:sourceFormat theDateString:sourceDateString];
return ([aDate stringValueWithFormat:destFormat]);
}
// ===================================================================
// MyUtils.h
// ===================================================================
@interface MyUtils
+ (NSString*) changeDateFormat_fromFormat:(NSString*)sourceFormat sourceDateString:(NSString*)sourceDateString destFormat:(NSString*)destFormat;
+ (void) simpleAlert_ok:(NSString*)alertTitle message:(NSString*)alertMessage;
@end
// ===================================================================
// Elsewhere.m
// ===================================================================
- (void) aFunction:(SomeClass*)someParam {
SomeOtherClass* val = nil;
NSString* intitule = nil;
intitule = [MyUtils changeDateFormat_fromFormat:@"yyyyMMdd" sourceDateString:@"toto" destFormat:@"EEEE dd MMMM yyyy"]; **<-- crash here**
Die Konsole sagt:
2011-01-03 02:05:07.188 Learning Project[1667:207] *** NSInvocation: warning: object 0xe340 of class 'MyUtils' does not implement methodSignatureForSelector: -- trouble ahead
2011-01-03 02:05:07.188 Learning Project[1667:207] *** NSInvocation: warning: object 0xe340 of class 'MyUtils' does not implement doesNotRecognizeSelector: -- abort
Wenn ich den Anruf ersetzen durch NSString *item = @"youyou";
dann alles in Ordnung ist.
Das Erzwingen einer Beibehaltung von aPreviousNSString vor dem Aufruf ändert nichts. Haben Sie eine Vorstellung davon, was passiert?
Können wir mehr Code sehen? Ich vermute, dass 'MyUtils' ein Singleton ist. Ist das korrekt? – Moshe
Dies scheint nicht Ihr tatsächlicher Code zu sein. Bei der Erstellung eines Scheinbeispiels haben Sie vielleicht wichtige Aspekte des abstürzenden echten Codes übersehen. Bitte zeigen Sie uns, was Sie tatsächlich verwenden. –
@Moshe Nein, dann wäre es '[[MyUtils sharedUtils] ...]' –