我刚刚将我的代码从Objective-C切换到Objective-C ++。除了两条线外,一切都在游动。
NSString * text1=[[NSString stringWithFormat:@"%.2f",ymax] UTF8String];
这一行抱怨
error: cannot convert 'const char*' to 'NSString*' in initialization
与第一个相关的第二个错误来自以下行:
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 ++之间的区别是否有我错过的东西?
答案 0 :(得分:7)
你想:
const char * text1 = [[NSString stringWithFormat:@"%.2f", ymax] UTF8String];
不
NSString *text1 = [[NSString stringWithFormat:@"%.2f", ymax] UTF8String];
(注意-UTF8String的返回值。)
答案 1 :(得分: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]];
答案 2 :(得分:1)
您不能将char *(UTF8String返回)分配给NSString *。这适用于一般情况;但是,C ++编译器显然对它更加严格。看来你的代码只是运气而已;你想把UTF8String的一位语句向下移动; CGContextShowTextAtPoint(context, 2, 8, text1, strlen([text1 UTF8String]));