2012-04-20 1 views
1

안녕하세요. 저는 정말 이상한 문제가 있습니다. NSObject의 새 하위 클래스를 만들지 만 구현시 "self.someproperty"를 사용할 수 없습니다. 일반적으로 "self"라는 단어를 입력하면 Xcode는 내가 입력 한 내용을 추측하여 도트 뒤에 속성 이름을 제공합니다. 하지만이 경우에는 빨간색 오류가 나타나지 않습니다. 나는 밤에 내 코드를 확인하고 지금 포기했다. 그래서, 어떤 사람이 나에게 조언을 해달라고하면 이것이 어딘가에 작은 문제 일 수 있다는 것을 알려주기 바란다. 사전에"self"는 Xcode에서 해당 속성을 감지 할 수 없습니다. 실제로 어떤 클래스 자체인지 알지도 못합니다.

#import <Foundation/Foundation.h> 

@interface FlickrPhotoCache : NSObject 

+(BOOL)isInCache:(NSDictionary *)photo; 

@end 



#import "FlickrPhotoCache.h" 

@interface FlickrPhotoCache() 

@property (nonatomic, strong) NSMutableArray *photos; 

@end 

@implementation FlickrPhotoCache 
@synthesize photos = _photos; 

+(BOOL)isInCache:(NSDictionary *)photo 
{ 
    self.photos // here I get error 
} 

@end 

감사 :

여기 내 코드입니다! WHT

+0

시도해보십시오. self._photos – lukecampbell

+0

실제로 "self"라고 입력하면 아래의 실시간 도움말 표시 줄에 "const class"가 표시됩니다.이 경우 "FlickrPhotoCache"여야합니다. 그리고 자동 보정은 "자기 - 사진"을 만들고 싶어합니다 ... – WHT

+0

luke self._photos 감사합니다 작동하지 않습니다 – WHT

답변

1

인스턴스 메서드가 아닌 정적 (클래스) 메서드에 대한 메서드를 선언 할 때 + 사용하고 있습니다. self은 인스턴스 메서드에만 존재합니다.

사용

-(BOOL)isInCache:(NSDictionary *)photo; 

속성 인스턴스 변수 self을 사용하는 선언.

그리고

-(BOOL)isInCache:(NSDictionary *)photo 
{ 
    self.photos; 
} 

는 잘 작동합니다.

+0

예, 이것은 이유입니다! 고맙습니다. 그런 다음 클래스 인스턴스를 호출해야합니다. 내가 생각한 것은 다른 클래스의 [FlickrPhotoCache isInCache : aPhoto]와 같이 호출하는 것입니다. 클래스 인스턴스를 만드는 것이 불필요하다고 생각합니다. 어떤 추천? – WHT

+0

죄송합니다. Luke 지금 당장 투표를 할 수 없습니다. 나는 15 가지 이상의 명성을 얻 자마자 그것을 할 것입니다. – WHT

+0

예, C에서'static struct'처럼 사용하려고하는 클래스 변수를 만듭니다.'@interface FlickrPhotoCache : NSObject + NSArray * knownPhotos; @ end' 또는 무엇인가. 더 자세한 설명은 http://stackoverflow.com/questions/6035824/objective-cstatic-class-variables를 참조하십시오. – lukecampbell