2012-05-01 5 views
0

내 프로젝트의 속성으로 클래스를 사용하고 싶습니다. 그 아이디어는 모든 엘레멘트를 포함하는 클래스를 가지고 있다는 것입니다. 아래에 그래프로 표시되는 기본 아이디어 : enter image description here 그래서 저는 myContainerClass 객체를 가지고 있고 다른 클래스에서하고 싶습니다. @property (강하고 비 구조) MyContainerClass * obj; 여기에 오류가 있습니다! 저는 Foundation 유형을 @property로만 사용할 수 있다고 생각합니다. 하지만 왜? 그 일을 대신하는 것 (물건을 건네주는 것)은 무엇입니까?NSObject 서브 클래스의 속성으로

+2

표시 코드 MyContainerClass 및 정확한 오류를 메시지. – borrrden

+0

MyContainer Class .m 및 .h 파일에 대한 코드를 여기에 게시하십시오. –

답변

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

oh, at (class) ... 바보 같은 저요! 고맙습니다! – Kuba

0

당신이 당신의 재산을 추가 할 객체에 대한 범주 선언 :

#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

이란 무엇입니까 : 다음 목표 C 연관된 객체의 트릭을 사용하여 세터와 게터 메소드를 구현

@interface NSObject (MyContainerClassAdditions) 

@property (nonatomic, strong) MyContainerClass *myContainerClass 

@end 

을 오류가 있습니까? MyContainerClass를 사용하려는 곳으로 가져 오지 않을 수도 있습니다.

#import "MyContainerClass.h" 
관련 문제