gpt4 book ai didi

objective-c - 如何像 Apple 在 Objective-C 中那样以 typedef 枚举为基础类行为?

转载 作者:行者123 更新时间:2023-12-03 17:28:18 26 4
gpt4 key购买 nike

有点奇怪的新手问题...我想在我的一个类中使用 typedef 枚举声明。这个特定的类被其他类使用,其中客户端类可能会说“将您的样式设置为 Style1(枚举类型)”之类的内容。那么目标类的行为就会相应地改变。这类似于 iPhone SDK 中使用 UITableViewCellStyles 的方式。

因此,我阅读了一些 UIKit 框架 header ,以更好地了解 Apple 如何处理枚举类型。我看到他们到处都声明了一堆枚举,就像这样......

typedef enum {
UIBarButtonSystemItemDone,
UIBarButtonSystemItemCancel,
UIBarButtonSystemItemEdit,
UIBarButtonSystemItemSave,
UIBarButtonSystemItemAdd,
...
UIBarButtonSystemItemUndo, // available in iPhone 3.0
UIBarButtonSystemItemRedo, // available in iPhone 3.0
} UIBarButtonSystemItem;

...但是我在标题中没有看到任何关于它们如何实际处理这些类型的线索(我基本上是想查看它们的实现示例,所以这并不奇怪)。作为一个相当新手的程序员,我的本能想法是将每种类型的 int 值与存储在数组、plist 等中的某些行为/变量相匹配。但作为一个新手程序员,我希望我认为的一切都会是错误的。所以我有两个问题:

  1. 有人猜测 Apple 本身如何处理枚举类型值来改变行为吗?
  2. 一般来说,对于这种类型的设置,是否存在人人都知道的最佳设计实践,或者这只是一个开放式场景?

最佳答案

简单枚举通常在 switch 语句中处理:

typedef enum {
eRedStyle,
eGreenStyle,
eBlueStyle
} MyStyle;

@implementation MyClass

- (void)setStyle:(MyStyle)style {
switch (style) {
case eRedStyle :
self.backgroundColor = [UIColor redColor];
break;
case eGreenStyle :
self.backgroundColor = [UIColor greenColor];
break;
case eBlueStyle :
self.backgroundColor = [UIColor blueColor];
break;
default :
NSLog(@"Bad Style: %d", style);
break;
}
}

关于objective-c - 如何像 Apple 在 Objective-C 中那样以 typedef 枚举为基础类行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1479362/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com