С тех пор, как я начал работать с приложениями iOS и объектами C, меня действительно озадачили разные места, где можно было объявить и определить переменные. С одной стороны, мы имеем традиционный подход C, с другой стороны, у нас есть новые директивы ObjectiveC, которые добавляют OO поверх этого. Могли бы вы, ребята, помочь мне понять лучшую практику и ситуации, когда я захочу использовать эти места для своих переменных и, возможно, исправить свое настоящее понимание?
Здесь образец класса (.h и .m):
#import <Foundation/Foundation.h>
// 1) What do I declare here?
@interface SampleClass : NSObject
{
// 2) ivar declarations
// Pretty much never used?
}
// 3) class-specific method / property declarations
@end
и
#import "SampleClass.h"
// 4) what goes here?
@interface SampleClass()
// 5) private interface, can define private methods and properties here
@end
@implementation SampleClass
{
// 6) define ivars
}
// 7) define methods and synthesize properties from both public and private
// interfaces
@end
- Мое понимание 1 и 4 заключается в том, что это объявления и определения на основе файлов в стиле C, которые не понимают понятия класса и поэтому должны быть точно использованы, как они будут использоваться в C. я ' мы видели, как они использовались для реализации статических переменных синглтонов раньше. Есть ли другие удобные способы использования, которые мне не хватает?
- Мой подход к работе с iOS заключается в том, что ivars полностью исключены из-за директивы @synthesize и поэтому могут игнорироваться в основном. Это дело?
- Относительно 5: почему я хотел бы объявлять методы в частных интерфейсах? Мои методы частного класса, похоже, очень просто компилируются без декларации в интерфейсе. Это в основном для удобства чтения?
Спасибо, кучка, ребята!