2012-03-31 45 views
2

如何将typedef signed long CFIndex转换为typedef unsigned int NSUInteger将CFIndex转换为NSUInteger?

如果我使用CFIndex作为NSUInteger类型的参数,那么可以吗?我没有铸造它,编译器似乎并不介意。编译器是否为我做了转换?

回答

4

在这里你需要非常小心,因为CFIndex是有符号的,NSUInteger是无符号的。有各种例程返回CFIndex -1。你需要在使用它作为NSUInteger之前检查它。

+0

我该如何检查? – ma11hew28 2012-04-15 12:10:18

+0

if(index> = 0){NSUInteger uInde​​x =(NSUInteger)index; ...} else {error-or-return-or-whatever; } – 2012-04-15 15:59:30