Я понял это! Если у кого-то есть такая же проблема, поменяйте ее ...
из
nav {
position: fixed;
width: 100%;
}
в
nav {
position: fixed;
width: 100%;
z-index: 10;
}
Быстрый ответ:
Когда вы устанавливаете:
url = [[coder decodeObjectForKey:@"url"] retain];
, вы , а не , используете @property
. Вы вручную устанавливаете значение переменной экземпляра url
. Следовательно, вы также должны вручную сохранить
значение.
Чтобы установить переменную с использованием синтезированных свойств, вы должны вместо этого вызвать:
[self setUrl:[coder decodeObjectForKey:@"url"]];
или
self.url = [coder decodeObjectForKey:@"url"];
Любая из этих форм будет использовать синтезированные методы и обрабатывают автоматически сохраняют
.
Подробности:
В Objective-C ключевые слова @property
и @synthesize
автоматически создают Методы получения и установки для вас:
@interface MyClass
{
id someValue;
}
@property (retain) id someValue;
@end
@implementation MyClass
@synthesize someValue;
@end
Эквивалентен:
@interface MyClass
{
id someValue;
}
- (id)someValue;
- (void)setSomeValue:(id)newValue;
@end
@implementation MyClass
- (id)someValue { return someValue; }
- (void)setSomeValue:(id)newValue
{
[newValue retain];
[someValue release];
someValue = newValue;
}
@end
Это создает важное различие между «внутренней» переменной-членом и свойством с тем же именем.