小编Eva*_*ase的帖子

枚举值的类型是什么?

我正在使用Apple的ScriptingBridge框架,并为iTunes生成了一个包含以下几个enum的头文件:

typedef enum {
    iTunesESrcLibrary = 'kLib',
    iTunesESrcIPod = 'kPod',
    iTunesESrcAudioCD = 'kACD',
    iTunesESrcMP3CD = 'kMCD',
    iTunesESrcDevice = 'kDev',
    iTunesESrcRadioTuner = 'kTun',
    iTunesESrcSharedLibrary = 'kShd',
    iTunesESrcUnknown = 'kUnk'
} iTunesESrc;
Run Code Online (Sandbox Code Playgroud)

我的理解是,enum值必须是整数,但这个定义似乎违反了这个规则.此外,似乎将这些enum值视为整数(NSPredicate例如,在一个中)并不是正确的事情.

我将enum上面的声明添加到一个带有空main函数的C文件中,并使用它编译i686-apple-darwin9-gcc-4.0.1.因此,虽然这些类型的enums可能不符合C标准(正如Parappa在下面指出的那样),但它们至少被gcc 编译成某种类型.

那么,那种类型是什么,以及如何在格式字符串中使用它?

c cocoa enums scripting-bridge

14
推荐指数
2
解决办法
1868
查看次数

为什么NSString和NSLog似乎以不同方式处理%C和%lc(以及%S和%ls)?

Apple的字符串格式说明符记录了声明,

NSString格式化方法和CFString格式化函数支持的格式说明符遵循IEEE printf规范 ; ...您也可以将这些格式说明符与NSLog函数一起使用.

但是,尽管printf规范定义%C作为等同于%lc%S作为等同于%ls%C%S看起来与正常工作NSLog+[NSString stringWithFormat:].

例如,请考虑以下代码:

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    unichar str[3];
    str[0] = 63743;
    str[1] = 33;
    str[2] = (unichar)NULL;

    NSLog(@"NSLog");
    NSLog(@"%%S:  %S", str);
    NSLog(@"%%ls: %ls", str);

    NSLog(@"%%C:  %C", str[0]);
    NSLog(@"%%lc: %lc", str[0]);

    NSLog(@"\n");
    NSLog(@"+[NSString stringWithFormat:]");

    NSLog(@"%%S:  %@", [NSString stringWithFormat:@"%S", str]);
    NSLog(@"%%ls: …
Run Code Online (Sandbox Code Playgroud)

unicode formatting cocoa printf

5
推荐指数
1
解决办法
7848
查看次数

测试通过HTTP进行通信的单元的好方法

通常,我发现自己想要为访问HTTP资源的一部分代码编写单元测试,作为其正常功能的一部分.你有没有找到任何好的方法来编写这些类型的测试?

language-agnostic unit-testing http

3
推荐指数
1
解决办法
196
查看次数