0

UIActivityIndi​​catorView の IBOutletCollection を定義しました。

IBOutletCollection(UIActivityIndicatorView) NSArray *ticker;

Interface Builder で必要な接続を行った後、次のコードを実行します。

for (UIActivityIndicatorView *obj in ticker)
 {
            [obj startAnimating];
 }

しかし、コンソールに次のメッセージが表示されます。

*キャッチされていない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。

それは非常に小さな問題かもしれませんが、実際には取得できません。

ありがとう!

4

2 に答える 2

1

何がうまくいかないのかわかりません。私は次のことを行いましたが、正常に動作します。

私の.hで

@property (strong, nonatomic)IBOutletCollection(UIActivityIndicatorView) NSArray *activityIndicators;

私の.mで(Xcode 4.4を使用していない場合)

@synthesize activityIndicators

StoryBoard に 7 つ以上のアクティビティ インジケーターを追加し、viewController に接続しました

私のviewDidLoadで私は呼んでいます

for (UIActivityIndicatorView *obj in self.activityIndicators){
        [obj startAnimating];
    }

この構成で問題なく動作します。

表示されるエラー メッセージに基づいて

'NSInvalidArgumentException', reason: '-[UIActivityIndicatorView countByEnumeratingWithState:objects:count:]

何かが正しく設定されていないように聞こえます。奇妙なことをしていないことを IB で確認してください。

于 2012-08-01T19:31:17.217 に答える
0

メソッドは、プロトコルcountByEnumeratingWithState:objects:count:の一部として配列オブジェクトに送信されることになっています。NSFastEnumerationメモリに問題がある場合、メッセージが間違ったオブジェクトに送信されることがあります。tickerが適切に保持されていることを再確認してください(また、 を使用するのがベスト プラクティスである場合もありますself.ticker)。

于 2012-08-01T19:20:27.087 に答える