1. ホーム
  2. objective-c

[解決済み] イニシャライザーの要素がコンパイル時定数でない

2022-02-08 23:26:24

質問

objective-cを使って、プログラムを書いています。エラー(initializer element is not a compile-time constant)が発生するのですが、なぜ発生するのかがよくわかりません。配列を初期化しようとしているだけなのですが。また、xcode6を使用しています。私の質問は、Objective-cでこれを正しく書き直すにはどうしたらいいか、そして新しいSwiftではどのように見えるか、ということです。また、なぜエラーが発生するのですか - 私はこの質問に関する他のスレッドのいくつかを実装する方法に従わないのですか?

名前.h

#import <Foundation/Foundation.h>

@interface Name : NSObject
@property (nonatomic, retain) NSMutableArray *myArray;

@end

名前.m

#import "Name.h"

@implementation Name

NSMutableArray *myArray = [[NSMutableArray alloc] init]; //error shows up here - initializer element is not a compile-time constant

[myArray addObject:@"Object 1"];

[myArray addObject:@"Object 2"];

[myArray addObject:@"Object 3"];

@end

解決方法は?

メソッド内でのみ変数を初期化する必要があります。

オーバーライドしてみる

 -(id) init
 {
  self = [super init];
  if(self)
  {
    myArray = [[NSMutableArray alloc] init];
  }
  return self;
 }