static NSArray *topologicallySortedReadableTypes;
static dispatch_once_t pred;
dispatch_once(&pred, ^{
topologicallySortedReadableTypes = [self readableTypes];
topologicallySortedReadableTypes = [topologicallySortedReadableTypes sortedArrayUsingComparator:^(id type1, id type2) {
if (type1 == type2) return (NSComparisonResult)NSOrderedSame;
if (UTTypeConformsTo((CFStringRef)type1, (CFStringRef)type2)) return (NSComparisonResult)NSOrderedAscending;
if (UTTypeConformsTo((CFStringRef)type2, (CFStringRef)type1)) return (NSComparisonResult)NSOrderedDescending;
// the problem is right here
return ((NSUInteger)type1 < (NSUInteger)type2) ? (NSComparisonResult)NSOrderedAscending : (NSComparisonResult)NSOrderedDescending;
}];
});
这是苹果提供的textedit最新版本的源代码,适用于10.7。由于苹果没有提供 10.8 的源代码,所以它在 10.8 下应该可以正常工作。但它给出了一个错误,即 当块文字具有未指定的返回类型时,返回类型'NSInteger'(又名'long')必须匹配先前的返回类型'NSComparisonResult'(又名'enum NSComparisonResult')。