2012-05-01 14 views
0

私のクラスをプロジェクトのプロパティとして使用したいと思います。アイデアは、私はすべてのリスト要素を含むクラスを持っているということです。私は基本的なアイデアをグラフの下に示します:enter image description here 私はmyContainerClassオブジェクトを持っています、そして、私は他のいくつかのクラスでしたい: @property(強い、非原子的)MyContainerClass * obj; ここに私はエラーがある!私は@propertyとしてFoundationsの型だけを使うことができると思います。しかし、なぜ?それを行うための置き換えは何ですか(オブジェクトを渡す)?プロパティとしてのNSObjectサブクラス

+2

表示MyContainerClassためのコードと正確なエラーをヘッダファイルで、最良の方法は、@class前方宣言を使用することを行うために、メッセージ。 – borrrden

+0

MyContainerクラス.mと.hファイルのコードをここに投稿してください –

答えて

2

いいえ、あなたは

@property (nonatomic, strong) MyContainerClass* obj; 

コンパイラはMyContainerClassがクラスであることを知っていることを完全に合法的に提供されるプロパティとしてあなたが好きなクラスを使用することができます。

@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 
+0

ああ、(クラス)...愚かな私!ありがとうございました! – Kuba

0

あなたがあなたの財産を追加するオブジェクトのカテゴリ宣言します。そして、Objective Cの関連するオブジェクトのトリックを使用してsetterメソッドとgetterメソッドを実装

@interface NSObject (MyContainerClassAdditions) 

@property (nonatomic, strong) MyContainerClass *myContainerClass 

@end 

を:

#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 
1

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

#import "MyContainerClass.h" 
関連する問題