Думайте обо всей магии target-c как о «более умном макросе», как о «более умном утверждении #define»
@property, если вы заметили, всегда находится в файле h,
@synthesize всегда находится в файле m.
Так на заднем плане
@property (что угодно) NSString * myString;
становится объявлением 2 методов и закрытой переменной;
void set_myString:(NSString *) str;
(NSString*) get_myString;
объявлений в заголовочном файле
чтобы заставить их что-то делать, их реализация добавляется в файл m при вводе
@synthesize myString;
который становится чем-то вроде
void set_myString: (NSString *) str
{
myString = str;
}
(NSString *) get_myString
{
return (myString);
}
Но это умнее, чем это
в зависимости от того, говорите ли вы «сохранить», «сильный» или «слабый»
он либо просто возвращает указатель на myString, либо копирует myString в новый объект
Так что все это делается автоматически компилятором, просто читая ваши объявления.
Что весьма полезно и экономит много времени