2012-04-20 1 views
1

Привет всем У меня действительно странная проблема. Я создаю новый подкласс NSObject, но я просто не могу использовать «self.someproperty» в реализации. Обычно, когда я набираю слово «я», Xcode угадает, что я набираю, и даю мне имя свойства после точки. Но в этом случае это не так и дает мне красную ошибку. Я проверил свой код на ночь и сдаюсь сейчас. Итак, попросите кого-нибудь дать мне совет, пожалуйста, дайте мне знать, что это может быть маленькая проблема где-то?«Я» не может обнаружить свои свойства в 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-класс», который в этом случае должен быть «FlickrPhotoCache». И автокоррекция хочет сделать это «self-> photos» ... – WHT

+0

спасибо luke self._photos не работает – WHT

ответ

1

Вы используете + при объявлении метода, который используется для методов static (class), а не методов экземпляра self существует только в методах экземпляра.

Использование

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

При объявлении использовать переменную экземпляра self для свойств.

А потом

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

работает просто отлично.

+0

да, это причина! Спасибо. то я должен создать экземпляр класса, когда я его назову? То, что я думал, - это назвать его [FlickrPhotoCache isInCache: aPhoto] в другом классе. Я просто считаю ненужным создание экземпляра класса. Любая рекомендация? – WHT

+0

Извините, Люк, я просто не могу проголосовать прямо сейчас. Я сделаю это, как только у меня будет 15 или более репутаций. – WHT

+0

Да, введите переменную класса, чтобы держать все, что вы пытаетесь использовать, как 'static struct' в C. Как' @interface FlickrPhotoCache: NSObject + NSArray * knownPhotos; @ end' или что-то в этом роде. См. Http://stackoverflow.com/questions/6035824/objective-c-static-class-variables для лучшего объяснения. – lukecampbell

Смежные вопросы