关于转换基本返回类型的快速问题

时间:2010-08-14 12:24:21

标签: objective-c casting

我发现自己投射返回类型很多,以使编译器警告静音,它总是让我觉得我做错了什么。

这个例子是Objective-c

const char *strBuf = [anNString UTF8String];
[anOutputStream write:strBufr maxLength:len];

这给我一个编译器警告 -UTF8String返回const char *和-write:maxLength:take const uint8_t *

所以,我知道没有更好的通常会添加演员来阻止唠叨并继续我的快乐方式。

这种不好的风格(就我而言),还是它的风格?

我感谢任何想法或建议。

2 个答案:

答案 0 :(得分:0)

没有办法解决这个问题。 C,C ++和Objective-C是强类型语言。所以,只要有类似的类型转换,你就会收到编译器警告。唯一的方法是使用相同的类型,这是不可能的。这很典型。我会继续做你正在做的事情。不要忽略警告或将其关闭,因为将会有一个类型转换,这将是您要修复的错误。如果你转过警告,你就会容易受到很难找到的错误。

答案 1 :(得分:0)

这种铸造有点难看,但它是处理这种类型不匹配的最常用方法。有些编译器提供了其他方法来消除这些警告,但关闭这些警告是一个坏主意,因为有时它们真的很重要。铸造承认差异,并确保你已经考虑过任何可能的后果。

考虑后果。如果你只是不假思索地把事情搞错了。但是你没有这样做,似乎没有。)