Когда вы пишете:
@interface NSDate (NSDateAdditions)
вы не подклассы NSDate
. Вместо этого вы добавляете категорию с именем NSDateAdditions
к классу NSDate
. При этом класс по-прежнему называется NSDate
, а методы, объявленные в категории, добавляются в NSDate
.
Вы можете объявить методы класса и / или экземпляра в категории. Например:
// NSDate+NSDateAdditions.h
@interface NSDate (NSDateAdditions)
- (id)anInstanceMethod;
+ (id)aClassMethod;
@end
и
// SomeImplementationFile.m
#import <UIKit/UIKit.h>
#import "NSDate+NSDateAdditions.h"
// in some method…
{
NSDate *someDate = [NSDate aClassMethod];
NSDate *anotherDate = [NSDate date];
id someResult = [anotherDate anInstanceMethod];
}
Не видя объявления вашей категории (и того, как вы его используете), трудно понять, что не так с вашим кодом. Необходимо проверить, объявили ли вы класс или метод экземпляра - методы класса объявлены с +
, а методы экземпляра объявлены с -
. При использовании метода класса вы отправляете сообщение классу, а именно: NSDate
:
// Send a message to the class
NSDate *someDate = [NSDate aClassMethod];
При использовании метода экземпляра вы отправляете сообщение ранее созданному экземпляру:
// Create an instance
NSDate *anotherDate = [NSDate date];
// Send a message to the instance
id someResult = [anotherDate anInstanceMethod];