Tha*_*nks 1 cocoa cocoa-touch objective-c
我写了一个做一些图形计算的方法.在那里,你可以指定一个起始方向,如"从左边","从右边","从底部","从顶部".
现在我不希望我的方法的用户传递混乱的值,如1,2,3或4甚至字符串.没有那样的事.相反,我想创建常量,如:
kFromLeft,kFromRight,kFromTop,kFromBottom
我在Apple头文件中看到过这个:
enum CGImageAlphaInfo {
kCGImageAlphaNone,
kCGImageAlphaPremultipliedLast,
kCGImageAlphaPremultipliedFirst,
kCGImageAlphaLast,
kCGImageAlphaFirst,
kCGImageAlphaNoneSkipLast,
kCGImageAlphaNoneSkipFirst,
kCGImageAlphaOnly
};
typedef enum CGImageAlphaInfo CGImageAlphaInfo;
Run Code Online (Sandbox Code Playgroud)
我不明白的五件事/我不清楚:
1)为什么有一个分号将定义与typedef分开?
2)为什么他们像parot一样重复CGImageAlphaInfo?
3)如果我在我的头文件中放入这样的东西,我会在我的方法中说参数的类型是CGImageAlphaInfo(当然我会有不同的名字),对吧?
4)我通常会以这样的方式指定这些常量的值?(例):
#define kCGImageAlphaNone 100
#define kCGImageAlphaPremultipliedLast 300
#define kCGImageAlphaPremultipliedFirst 900
Run Code Online (Sandbox Code Playgroud)
5)我是否需要将这些常量设置为这样的愚蠢值?或者我可以在我的方法中检查哪个常量传入,比如
if(paramConst == kCGImageAlphaNone) {...}
Run Code Online (Sandbox Code Playgroud)
?
1)分号总是终止一个enum语句.在这种情况下,有两个单独的语句:一个定义命名枚举,下一个定义新类型.
2)enum语句创建一个名为" enum CGImageAlphaInfo" 的新类型.但是到处输入这个很麻烦,所以使用了typedef语句.typedef语句的工作方式如下:
typedef <sometype> <newname>;
enum CGImageAlphaInfo旧类型CGImageAlphaInfo也是如此,并且是新名称.Apple使用相同的名称,这有点令人困惑,但实际上是最好的方法.
3)对.
4)你可以这样做,但是你必须手动分配常数值; 枚举值自动分配.但是,主要的好处是你得到了一些类型检查,因为你可以使用CGImageAlphaInfo类型而不是简单的int,这可以更容易地分配无效值.
5)我不确定你的"愚蠢价值观"是什么意思.但是,是的,您应该始终使用您描述的方式检查名称,并且永远不要使用某些原始值,如"300"或"1".
| 归档时间: |
|
| 查看次数: |
768 次 |
| 最近记录: |