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