私は iOS > 5.0 用のアプリを開発しており、Xcode 4.6.2 を使用しています。これには多くの要素UIView
が含まれています。UIKit
例を挙げると、想像どおりRadioButton
の基本クラスを持つカスタムクラスがあります。のサブクラスであるUIButton
というクラスもあります。CRTLabel
UILabel
po [view subviews]
コンソールにいるとき、私は得ました
$0 = 0x0754c4d0 <__NSArrayM 0x754c4d0>(
<CRTLabel: 0x857f120; baseClass = UILabel; frame = (10 10; 360 35); text = '2- Sizce evet mi hayır mı...'; clipsToBounds = YES; userInteractionEnabled = NO; tag = 1; layer = <CALayer: 0x857f1b0>>,
<RadioButton: 0x857f520; baseClass = UIButton; frame = (20 65; 44 44); opaque = NO; layer = <CALayer: 0x857f5e0>>,
<CRTLabel: 0x857f800; baseClass = UILabel; frame = (84 65; 600 44); text = 'Evet'; clipsToBounds = YES; userInteractionEnabled = NO; tag = 122; layer = <CALayer: 0x857f740>>,
<RadioButton: 0x857fb50; baseClass = UIButton; frame = (20 139; 44 44); opaque = NO; tag = 1; layer = <CALayer: 0x857fa60>>,
<CRTLabel: 0x857fd60; baseClass = UILabel; frame = (84 139; 600 44); text = 'Hayır'; clipsToBounds = YES; userInteractionEnabled = NO; tag = 122; layer = <CALayer: 0x857fc60>>
)
ビューのすべてのサブビューを反復処理する for ループがあります。だから私はこのコードを使用します、
for(RadioButton *radioButton in view.subviews)
{
if(radioButton.selected == YES && radioButton.tag == 0)
// Does something
else if(radioButton.selected == YES && radioButton.tag == 1)
// Does something
}
選択したプロパティがないと言ってアプリがクラッシュしました。メソッドを使用isKindOfClass
して、radioButton の種類をテストしましRadioButton
た。だから、それが種類のない場合、すべてのサブビューを反復することがわかりましたRadioButton
。さらに説明すると、現在のサブビューが であってもCRTLabel
、次の行にステップオーバーし、CRTLabel
というプロパティがないselected
ため、クラッシュします。
したがって、私の期待は、そうでないすべてのクラスを排除することであり、sRadioButton
のみを反復しRadioButton
ます。
だから私の質問はそれwhat is the advantage of specifying a custom class in foreach loop in Objective-c
ですか?id
id が一種かどうかを確認するよりも、常にループで使用できますRadioButton
。