クラスMyUtilsにクラス関数(宣言され実装されている)があります。 この関数を呼び出すと、アプリがクラッシュします。デバッガでは、 "theFunction"関数の最初のアクションにブレークポイントがあります。そして、このブレークポイントに決して達しません。ここでObjective-CとCocoa:関数を入力せずにクラス関数を呼び出すとクラッシュする
コードです:
// =================================================================================================
// 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**
コンソール言う:
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
私はNSString *item = @"youyou";
で呼び出しを置き換える場合は、すべてがOKです。
コールが何も変更されない前に、前のNSStringに保持を強制します。 何が起こっているのか考えていますか?
もっとコードを表示できますか?私は、「MyUtils」はシングルトンだと推測しています。あれは正しいですか? – Moshe
これは実際のコードではありません。モックの例を作成する際に、クラッシュする実際のコードの重要な部分を見逃している可能性があります。あなたが実際に使っているものを見せてください。 –
@Mosheいいえ、それから '[[MyUtils sharedUtils] ...]' –