たランタイム(32ビットまたは64ビット)に応じて、あなたが明示的にインスタンス変数(size
とpoint
)を宣言したり、ランタイムによって合成されているかどうか、あなたはarray[0][0]->size
のようにそれらを直接アクセスすることができます。 これは良い考えではありませんしかし。現代のランタイムでは破損し、ではなく、 Objective-Cの方法で、クラスの実装の詳細を公に公開してカプセル化を解除します。
Objective-C 2.0では、正確に表示したい各属性のプロパティを宣言するのが正しい方法です。あなたは今((Ball*)array[0][0]).size
のような大きさにアクセスすることができます
@synthesize size;
@synthesize point;
:
@property (assign) int size;
@property (assign) CGPoint point;
そしてBall
の@implementation
ブロック内:Ball
の@interface
宣言に次の行を追加します。キャストは、コンパイラがドット表記をプロパティアクセスとして認識するために必要です。アクセサメソッド(@synthesize
によって自動的に生成される)を使用する場合は、必ずしも必要ではありません。[array[0][0] size]
。
Objective-Cでこれを行うには、インスタンス変数を公開するのは良い方法ではありません。それは脆弱なコードになります。上記のBarryのソリューションをお勧めします。 –
彼が尋ねたのは、それをやる方法でした。 – micmoo