0

ビューコントローラクラスから以下の(スクロールアニメーションクラス)タイプのメソッドを呼び出そうとしています。

-(void)CreateLabel:(CGRect )frame andLabel:(UILabel *[NUM_LABELS])label andview:(UIView *)view;

引数を渡そうとするとエラーが発生しました。これを呼び出す方法について何か提案はありますか?

これが私がそのメソッドを呼んだ方法です

ScrollAnimation *newAnimation = [[ScrollAnimation alloc] init];
[newAnimation CreateLabel:CGRectMake(0, 50, 300,30) andLabel:animateLabel[NUM_LABELS] andview:self.view];

エラーがあります

 /Volumes/Red Drive/CarTransition/CarTransition/ViewController.m:120:66: Implicit conversion of an Objective-C pointer to 'UILabel **' is disallowed with ARC 


 /Volumes/Red Drive/CarTransition/CarTransition/ViewController.m:120:66: Incompatible pointer types sending 'UILabel *__strong' to parameter of type 'UILabel **'

ラベルメソッドの作成:

  -(void)CreateLabel:(CGRect )frame andLabel:(UILabel *[NUM_LABELS])label andview:(UIView *)view{
for (int i = 0; i<NUM_LABELS ; i++){

    if(i == 0){
        label[0] = [[UILabel alloc] initWithFrame:CGRectMake(frame.origin.x, frame.origin.y, frame.size.width,frame.size.height)];
        label[i].text = @"MINI ";
    }else if(i == 1){
        label[1] = [[UILabel alloc] initWithFrame:CGRectMake(frame.origin.x, frame.origin.y - 40 ,frame.size.width, frame.size.height)];
        label[1].text = @"COOPER ";
    }else if(i == 2){
        label[2] = [[UILabel alloc] initWithFrame:CGRectMake(frame.origin.x, frame.origin.x-120 ,frame.size.width,frame.size.height)];
        label[2].text = @"STYLING";
    }
}
4

1 に答える 1

0

あなたのメソッドはポインタの配列を要求しています。

これが汚い例です:

- (void)passArgument:(NSObject *[])anObject total:(uint)total{
    for (int i = 0; i < total; i++) {
        NSLog(@"list --> %@", anObject[i]);
    }
}

今、呼び出し:

NSString* object[5] = {@"a", @"b", @"c", @"d", @"e"};
[self passArgument: object total: 5];
[self passArgument: &object[2] total: 3];
  1. 注:オブジェクトはポインターの配列です、(*)
  2. &object [2]はポインタのアドレスです(&**)
  3. object [1]はポインター(**)へのポインターであり、それはあなたが望むものではありません
于 2012-10-12T10:03:12.087 に答える