Мне не удалось найти никакой информации по этой теме, и большая часть того, что я знаю об этом, появилась совершенно случайно (и нескольких часов попыток выяснить, почему мой код не работает ). Изучая цель -c, в большинстве туториалов я находил переменные make и свойства с одинаковыми именами. Я не понимаю значения, потому что кажется, что свойство делает всю работу, а переменная просто сидит там. Например:
Тест.ч
@interface Test : NSObject {
int _timesPlayed, _highscore;
}
@property int timesPlayed, highscore;
// Methods and stuff
@end
Тест.м
@implementation Test
@synthesize timesPlayed = _timesPlayed;
@synthesize highscore = _highscore;
// methods and stuff
@end
Что я знаю
1 )Итак, сегодня я обнаружил (после нескольких часов замешательства ), что независимо от того, сколько изменений вы вносите в свойства highscore = 5091231
, это ничего не изменит, когда вы попытаетесь вызвать [test highscore] как он по-прежнему будет возвращать значение _highscore, которое (я думаю )является ivar, установленным в test.h. Таким образом, все изменения переменных в test.m должны быть изменены _highscore, а не highscore. (Поправьте меня, если я ошибаюсь, пожалуйста)
2 )Если я правильно понимаю (Я, вероятно, не )ivars, установленные в test.h, представляют реальную память, тогда как @properties — это просто способы доступа к этой памяти. Таким образом, вне реализации я не могу получить доступ к рекорду _без использования этого свойства.
Чего я не понимаю
По сути, чего я не понимаю в этой ситуации, так это того, нужно ли мне вообще использовать ivars или я могу просто использовать @property и @synthesize. Кажется, что ивары — это просто дополнительный код, который на самом деле ничего не делает, но сбивает меня с толку. Некоторые из самых последних тутонов, которые я видел, похоже, не используют ивары, но некоторые используют. Так это просто предпочтение кодирования или это действительно важно?Я пробовал искать в документации Apple, но я немного заблудился и, кажется, никогда не находил то, что ищу. Любое руководство будет принято с благодарностью.