Какие предпочтительные категории или личные атрибуты в интерфейсе - PullRequest
0 голосов
/ 02 декабря 2011

Что является предпочтительным и чистым решением для атрибутов в классе. Используйте категории (анонимные) или аннотацию @private в определении интерфейса (файл .h). Атрибуты не должны наследоваться другими классами.

BR, mybecks

Ответы [ 2 ]

1 голос
/ 03 декабря 2011

Сначала прочтите это, чтобы понять модификатор @private Что означает "@private" в Objective-C?

А потом ответить на ваши вопросы.

Анонимная категория называется class extension, и это то, что я использую, чтобы поддерживать мой API в чистоте и не публично анонсировать свои ивары.

1011 * например *

// .h
@interface MyClass : NSObject

@end

// .m
@interface MyClass ()

@property (nonatomic, strong) NSDate *someDateImWorkingWith;

@end

@implementation MyClass

@synthesize someDateImWorkingWith = _someDateImWorkingWith;

@end

В результате у меня есть NSDate *someDateImWorkingWith для использования в моем классе, но никто, импортирующий мой заголовок, даже не узнает, что он существует, не сделав немного копания. Это хорошо работает для меня, ваш milage может варьироваться.

1 голос
/ 02 декабря 2011

Категории и @private - это две разные вещи.Категории расширяют классы, где вы можете добавлять методы к классу, а @private - то, где другие классы не могут напрямую обращаться к вашим атрибутам и должны будут использовать ваши методы доступа.Если вы хотите, чтобы ивары были недоступны подклассам, используйте @private в своем интерфейсе.

@interface MyClass : NSObject
{
@private
int num; //private attribute where subclass can't access
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...