0

プロジェクトのプロパティとしてクラスを使用したいと思います。アイデアは、すべてのリスト要素を含むクラスがあるということです。以下のグラフに示す基本的な考え方:ここに画像の説明を入力してください myContainerClassオブジェクトがあり、他のクラスで実行したい:@property(strong、nonatomic)MyContainerClass * obj; そしてここで私はエラーがあります!私は、Foundationsタイプを@propertyとしてのみ使用できることを理解しています。しかし、なぜ?それを行う(オブジェクトを渡す)代わりに何をしますか?

4

3 に答える 3

2

いいえ、プロパティとして好きなクラスを使用できます

@property (nonatomic, strong) MyContainerClass* obj;

MyContainerClassコンパイラがそれがクラスであることを知っていれば、完全に合法です。ヘッダーファイルでこれを行うには、@class前方宣言を使用するのが最善の方法です。

@class MyContainerClass;

@interface SomeOtherClass : NSObject

// method an property declarations

@property (nonatomic, strong) MyContainerClass* obj;

@end

次に、実装にヘッダーファイルをインクルードします。

#import "MyContainerClass.h"

@implementation SomeOtherClass

@synthesize obj;

// other stuff

@end
于 2012-05-01T08:54:32.033 に答える
1

あなたが得ているエラーは何ですか?MyContainerClassを使用したい場所にインポートしていない可能性があります。

#import "MyContainerClass.h"
于 2012-05-01T08:52:32.917 に答える
0

プロパティを追加するオブジェクトのカテゴリを宣言します。

@interface NSObject (MyContainerClassAdditions)

@property (nonatomic, strong) MyContainerClass *myContainerClass

@end

次に、ObjectiveCに関連付けられたオブジェクトトリックを使用してsetterメソッドとgetterメソッドを実装します。

#import <objc/runtime.h>

@implementation NSObject (MyContainerClassAdditions)

- (void)setMyContainerClass:(MyContainerClass *)myContainerClass {
    objc_setAssociatedObject(self, "myContainerClass", myContainerClass, OBJC_ASSOCIATION_ASSIGN);
}

- (MyContainerClass *)myContainerClass {
    return objc_getAssociatedObject(self, "myContainerClass");
}

@end
于 2012-05-01T08:49:10.523 に答える