Разновидности объявлений @interface, некоторые с круглыми скобками - PullRequest
6 голосов
/ 12 октября 2011

Я заметил множество @interface объявлений для классов Objective-c.Я хотел бы понять, почему разработчики объявляют @interface следующими способами:

// in the .h file
@interface MyClass : NSObject
// ...
@end

// in the .m file (what's the purpose of the parens?)
@interface MyClass ()
// more property declarations which seem like they can go in the .h file
@end

// again in the .m file (what's the purpose of private?)
@interface MyClass (Private)
// some method declarations
@end

Ответы [ 3 ]

5 голосов
/ 12 октября 2011

Это просто обычный интерфейс класса , унаследованный от NSObject, где вы объявляете ivars, свойства и методы

// in the .h file
@interface MyClass : NSObject
// ...
@end

Следующие два * категории ,которые позволяют добавлять методы в класс.Однако это не подкласс (не объявляйте метод с тем же именем, так как вы не сможете получить доступ к исходному).Если у вас есть именованная категория интерфейса (например, @interface MyClass (Private)), то реализация должна быть представлена ​​в @implementation MyClass (Private), в случае безымянных категорий (также называемых расширениями) реализация может быть предоставлена ​​как обычно.Обратите внимание, что расширения также позволяют вам добавлять ivars в класс, в то время как (именованные) категории этого не делают.

// in the .m file (what's the purpose of the parens?)
@interface MyClass ()
// more property declarations which seem like they can go in the .h file
@end

// again in the .m file (what's the purpose of private?)
@interface MyClass (Private)
// some method declarations
@end
2 голосов
/ 12 октября 2011

Используется для объявленных приватных методов.

Этот ответ объясняет это в деталях: Какие передовые практики вы используете при написании Objective-C и Какао?

0 голосов
/ 12 октября 2011

Все, что входит в файл .m, является приватным. Парены предназначены для категорий, поэтому вы можете разбить код на категории, чтобы сделать его более читабельным. потому что код находится в .m и private, они назвали категорию Private.

...