【发布时间】:2012-09-04 20:19:29
【问题描述】:
我是这方面的新手,所以在此先感谢您的帮助。
我只是在 iOS 中做一些小练习,我有 2 个不同的东西调用同一个例程。
这些消息调用中的每一个都通过发送者。其中一个是UIButton,它在touchUpInside 时调用,一个是UISegmentedControl,它在valueChanges 时调用。
我需要在同一个方法中稍微不同地处理初始部分,我知道我以某种方式使用了 sender。
我需要做的是询问发件人是UIButton还是发件人是UISegmentedControl。
我试过了
if ([sender isKindOfClass:UISegmentedControl]) { ... }
和
if ([sender isKindOfClass:UIButton]) { ... }
两者都抛出一个像这样的错误:
Unexpected interface name "UIButton": expected expression
所以这显然是错误的。
【问题讨论】:
-
由于这是两种不同类型的控件,我强烈考虑让它们指向不同的函数,然后将 通用的代码移动到不同的例程中,您可以从这两个函数调用。我喜欢将代码隔离开来,这样既方便又易于理解......
-
同意@lnafziger;一般来说,使用
isKindOfClass:来实现不同的行为既不常见也不鼓励。最好有不同的、显式的执行路径,并排除通用代码。指针比较(如下所述的 Hot Licks)更可口,但与简单地拥有一个单独的插座相比仍然有点迟钝。
标签: objective-c cocoa-touch ios5