3

これは私には意味がありません。アプリが次のエラーでクラッシュします。

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFType screenFontWithRenderingMode:]: unrecognized selector sent to instance 0x209bb200'

これは iOS アプリです。私が見る限り、screenFontWithRenderingMode は iOS ではなく Mac OS X の NSFont メソッドです。では、どのようにしてこのエラーが発生するのでしょうか?

新しくリリースされた Xcode 5 を使用してアプリを作成しています。アプリは iOS バージョン 6.1 および 7.0 (およびそれ以降) をサポートします。このエラーは、6.1 デバイス (およびシミュレーター) でアプリを実行している場合にのみ発生します。

編集:

アプリをデバッグ モードで実行しても、クラッシュ ログを生成できませんでした。アドホック ビルドを作成することで、アプリをロードして実行し、クラッシュさせ、クラッシュ ログを取得することができました。

0   CoreFoundation                  0x3220a29e __exceptionPreprocess + 158
1   libobjc.A.dylib                 0x3a06e97a objc_exception_throw + 26
2   CoreFoundation                  0x3220de02 -[NSObject(NSObject) doesNotRecognizeSelector:] + 166
3   CoreFoundation                  0x3220c52c ___forwarding___ + 388
4   CoreFoundation                  0x32163f64 __forwarding_prep_0___ + 20
5   UIFoundation                    0x37da15c8 +[NSStringDrawingTextStorage _fastDrawString:attributes:length:inRect:graphicsContext:baselineRendering:usesFontLeading:usesScreenFont:typesetterBehavior:paragraphStyle:lineBreakMode:boundingRect:padding:scrollable:baselineOffset:] + 344
6   UIFoundation                    0x37da0184 -[NSAttributedString(NSExtendedStringDrawing) _doBoundingRectWithSize:options:context:baselineOffset:] + 676
7   UIFoundation                    0x37d9fc8c -[NSAttributedString(NSExtendedStringDrawing) boundingRectWithSize:options:context:] + 2492

問題のある行を追跡できました:

CGRect rect = [[MLFeedCell attributedBodyForItem:item].attributedString boundingRectWithSize:CGSizeMake(labelWidth, 10000) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading context:nil];

この呼び出しの何が問題なのかわかりません。

4

1 に答える 1

3

The error is because you are trying to use:

[NSString boundingRectWithSize:options:attributes:context:]

That method was added in IOS 7.0 in the NSStringDrawing.h category.

source:

于 2013-11-22T18:22:13.017 に答える