3

コードをObjective-CからObjective-C++に切り替えました。2本の線を除いてすべてが泳ぎに行きます。

NSString * text1=[[NSString stringWithFormat:@"%.2f",ymax] UTF8String];

この行は

error: cannot convert 'const char*' to 'NSString*' in initialization

最初のエラーに関連する2番目のエラーは、次の行からのものです。

CGContextShowTextAtPoint(context, 2, 8, text1, strlen(text1));

それは文句を言う

error: cannot convert 'NSString*' to 'const char*' for argument '1' to 'size_t strlen(const char*)'

ObjCとObjC++の違いで見逃したことはありますか?

4

3 に答える 3

7

あなたが欲しい:

const char * text1 = [[NSString stringWithFormat:@"%.2f", ymax] UTF8String];

いいえ:

NSString *text1 = [[NSString stringWithFormat:@"%.2f", ymax] UTF8String];

-UTF8Stringの戻り値に注意してください。)

于 2010-03-08T20:44:48.730 に答える
2

しかし、NSStringに自分自身を描画するように指示することもできることをご存知ですか?

NSString *text = [NSString stringWithFormat:@"%.2f", ymax];

//  Send a message to the string to draw itself at the given point with
//  the provided font.
//
[text drawAtPoint:CGPointMake(20.0, 30.0)
         withFont:[UIFont systemFontOfSize:36.0]];
于 2010-03-08T20:55:55.503 に答える
1

char *(UTF8Stringが返す)をNSString*に割り当てることはできません。これは一般的な場合にも当てはまります。ただし、C++コンパイラは明らかにそれについてより厳密です。あなたのコードは単なる運のストロークによってコンパイルされたようです。UTF8Stringビットを1ステートメント下に移動します。CGContextShowTextAtPoint(context, 2, 8, text1, strlen([text1 UTF8String]));

于 2010-03-08T20:45:55.530 に答える