Apple Developer Connection
Advanced Search
Member Login Log In | Not a Member? Contact ADC

< 前ページ次ページ >

ランタイムの相違

一般に、プロパティの動作は32ビットランタイムと64ビットランタイムとで同じです。重要な相違が1つあり、64ビットランタイムはフラジャイルでないインスタンス変数をサポートするのに対し、32ビットランタイムはこれをサポートしません。

32ビットランタイムを使用して、あるクラス(サブクラスも含む)のすべてのクライアントは、そのクラスの格納方法の完全な詳細を知る必要があるため、そのクラスの@interface宣言ブロックでインスタンス変数を完全に宣言する必要があります。クラスの格納場所の定義は、バイナリ互換性問題を引き起こさずに変えることは不可能であるため、「フラジャイルなインスタンス変数」ランタイムでは、インスタンス変数の合成はサポートされていません。「フラジャイルなインスタンス変数」のランタイムで@synthesizeが機能するためには、同じ名前でプロパティの型に互換性のあるインスタンス変数を用意するか、@synthesize文で既存の別のインスタンス変数を指定する必要があります。

たとえば、

@interface My32BitClass : NSObject
{
    CGFloat gratuitousFloat;
}
@property CGFloat gratuitousFloat;
@end
 
@implementation My32BitClass
@synthesize gratuitousFloat; // 格納用にインスタンス変数"gratuitousFloat"を使う
@end
 
 
@interface My64BitClass : NSObject
{ }
@property CGFloat gratuitousFloat;
@end
 
@implementation My64BitClass
@synthesize gratuitousFloat; // 格納用にインスタンス変数"gratuitousFloat"を合成する
@end


< 前ページ次ページ >


Last updated: 2007-10-31




Did this document help you?
Yes: Tell us what works for you.

It’s good, but: Report typos, inaccuracies, and so forth.

It wasn’t helpful: Tell us what would have helped.
Get information on Apple products.
Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Copyright © 2007 Apple Inc.
All rights reserved. | Terms of use | Privacy Notice