З того часу, як почав працювати над додатками для iOS та ціл C, я був дуже спантеличений різними місцями, де можна було оголосити та визначити змінні. З одного боку ми маємо традиційний підхід С, а з іншого - нові директиви ObjectiveC, які додають ОО до того ж. Чи можете ви, люди, допомогти мені зрозуміти найкращу практику та ситуації, коли я хотів би використовувати ці місця для моїх змінних і, можливо, виправити своє теперішнє розуміння?
Ось зразок класу (.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. Я бачив їх раніше застосовувались для реалізації статичних синглів на змінних. Чи є інші зручні способи використання, які мені не вистачає?
- Моя потреба в роботі з iOS полягає в тому, що ivars повністю припинено поза межами директиви @synthesize і, таким чином, їх можна здебільшого ігнорувати. Це так?
- Щодо 5: чому я б хотів декларувати методи в приватних інтерфейсах? Мої методи приватного класу, здається, збираються просто без декларації в інтерфейсі. Це в основному для читабельності?
Дякую купу, люди!