Cocoa sizeof(string)总是返回8

时间:2014-06-10 16:24:00

标签: cocoa

我有几行代码可以切断包含目录路径的字符串的前6个字符。如果sourcePathString中存储的目录路径是“file:/// Users / username / Desktop”,那么这段代码不应该将subString设置为“/ Users / username / Desktop”吗?由于某种原因,它将被设置为“/ Users / u”,这意味着stringSize被设置为8.无论目录路径有多长,都会发生这种情况。

NSString *sourcePathString = [sourceURL absoluteString];
int stringSize = sizeof(sourcePathString);
NSString *subString = [sourcePathString substringWithRange:NSMakeRange(7,stringSize)];

我知道字符串sourcePathString包含整个目录路径,因为我已经尝试将其内容直接放入文本字​​段。

我对Cocoa很陌生,所以我很可能错过了一些明显的东西。

1 个答案:

答案 0 :(得分:1)

在这种情况下sizeof()将返回指向对象string的指针的大小。在64位系统上,这是8个字节。

您想使用int stringSize = [string length]

或更具体:你为NSRangeCall

调整它
NSString *subString = [sourcePathString substringWithRange:NSMakeRange(7,[string length] - 8)];

因为它不是从头开始。