encodeCGPoint:forKey:
-(void)encodeCGPoint:(CGPoint)point forKey:(NSString *)key
解説
`encodeCGPoint:forKey:` メソッドは、`NSKeyedArchiver` や `NSCoder` を使って `CGPoint` 構造体をエンコードする際に使用されます。以下に、`CGPoint` をエンコードおよびデコードするための Objective-C のサンプルコードを示します。
このサンプルでは、`CGPoint` をプロパティとして持つカスタムクラス `MyClass` を作成し、そのインスタンスをエンコードとデコードする方法を示します。
```objective-c
#import <Foundation/Foundation.h> #import <CoreGraphics/CoreGraphics.h> @interface MyClass : NSObject <NSCoding> @property (nonatomic) CGPoint point; - (instancetype)initWithPoint:(CGPoint)point; @end @implementation MyClass - (instancetype)initWithPoint:(CGPoint)point { self = [super init]; if (self) { _point = point; } return self; } // エンコードメソッド - (void)encodeWithCoder:(NSCoder *)coder { [coder encodeCGPoint:self.point forKey:@"point"]; } // デコードメソッド - (instancetype)initWithCoder:(NSCoder *)coder { self = [super init]; if (self) { _point = [coder decodeCGPointForKey:@"point"]; } return self; } @end int main(int argc, const char * argv[]) { @autoreleasepool { // CGPointを持つMyClassのインスタンスを作成 CGPoint myPoint = CGPointMake(10.0, 20.0); MyClass *myObject = [[MyClass alloc] initWithPoint:myPoint]; // オブジェクトをエンコード NSData *data = [NSKeyedArchiver archivedDataWithRootObject:myObject requiringSecureCoding:NO error:nil]; // データをデコード MyClass *decodedObject = [NSKeyedUnarchiver unarchivedObjectOfClass:[MyClass class] fromData:data error:nil]; // 結果を出力 NSLog(@"Original CGPoint: (%.2f, %.2f)", myObject.point.x, myObject.point.y); NSLog(@"Decoded CGPoint: (%.2f, %.2f)", decodedObject.point.x, decodedObject.point.y); } return 0; }
```
### 説明:
1. **MyClass**: `CGPoint` をプロパティとして持つクラスを定義します。このクラスは `NSCoding` プロトコルに準拠しています。
2. **encodeWithCoder:**: `CGPoint` をエンコードするために `encodeCGPoint:forKey:` メソッドを使用しています。
3. **initWithCoder:**: デコード時に `decodeCGPointForKey:` メソッドを使用して、エンコードした `CGPoint` を復元します。
4. **main**: `MyClass` のインスタンスを作成し、エンコードしてからデコードする一連の流れを示しています。
このコードを実行すると、オリジナルの `CGPoint` とデコード後の `CGPoint` が一致することが確認できます。
返り値
( void )
引数
( CGPoint )point
( NSString * )key
フレームワーク
UIKit
クラス
NSCoder UIKit Additions
Instance Methods
使用可能
iPhone2.0