Я видел доступ к переменной в iphone sdk с -> или. символ. Какой из них лучший? В чем разница между self.variable и self-> variable?В чем разница между self.variable и self-> variable?
ответ
Точка-обозначение проходит через аксессор, стрелка обозначение идет непосредственно к переменному экземпляру. Попробуйте этот код:
@interface Foo : NSObject
@property(assign, nonatomic) NSInteger bar;
@end
@implementation Foo
@synthesize bar;
- (void) setBar: (NSInteger) newBar
{
NSLog(@"Setting new bar.");
bar = newBar;
}
- (id) init
{
self = [super init];
self->bar = 5; // doesn’t log anything
self.bar = 6; // logs
return self;
}
@end
Точечная нотация будет использовать свойства методов getter/setter - так зависит от того, что вы заявили, что переменная может быть сохранена или назначена, или вы можете указать свои собственные методы getter/setter для выполнения дополнительной работы всякий раз, когда это свойство установлено.
self-> указатель ссылки на себя. Который обращается к var напрямую. Я лично не вижу смысла использовать его в obj c, поскольку только «var on its own» будет иметь тот же эффект.
пс. Есть много других вопросов/ответов на этот точный вопрос здесь, на SO.
This один
This один
self.var
означает, что вы объявляете свойство для вар, предположим, как:
@property (nonatomic, retain) id var;
это на самом деле вызывает [само вар] для self.var
.
В то время как self->var
просто получает значение члена self, например, на C++ или еще.
- 1. В чем разница между «$ (variable)» и «$ (VARIABLE)»
- 2. self.variable и переменная разница
- 3. Python self.variable vs private member variable variable
- 4. В чем разница между _variable & self.variable в Objective-C?
- 5. В чем разница между if (! Variable) и if (isset ($ variable))?
- 6. Разница между self.variable и _variable, о KVO
- 7. Разница между CREATE и VARIABLE
- 8. В чем разница между «=» & «=>» и «@variable», «@@ variable» и «: variable» в ruby?
- 9. В чем разница между == ~ и! =?
- 10. В чем разница между Variable и ResourceVariable в Tensorflow
- 11. В чем разница между setq и set-variable в emacs?
- 12. Разница между использованием self.variable и _variable при инициализации этих переменных
- 13. В чем разница между новой переменной $ variable и новым my_model?
- 14. PHP В чем разница между $ GLOBALS ['variable']; и глобальная переменная $;
- 15. Разница между self.variable name и classname.variable в python
- 16. В чем разница между использованием self._variable и просто self.variable в конструкторе в Python
- 17. Целевая разница C между self.variable и переменными присваиваниями
- 18. В чем разница между this-> variable и namespace :: class :: variable в C++?
- 19. В чем разница между print ('text' + str (variable)) и print ('stuff', variable) в python?
- 20. В чем разница между «и»?
- 21. В чем разница между `{}` и `[]`?
- 22. В чем разница между == и ===?
- 23. В чем разница между «+» и «\ +»?
- 24. В чем разница между + = и = +?
- 25. В чем разница между/* ... */и/** ... */
- 26. В чем разница между: и +:
- 27. В чем разница между $ {} и # {}
- 28. В чем разница между $ _. и $ _
- 29. В чем разница между = и: =
- 30. В чем разница между && и &?
Для объяснения того, что происходит при использовании точечной нотации и свойств с синтезом, см. [This] (http://stackoverflow.com/questions/8576593/objective-c-memory-management-of-instance-members/ 8576760 # 8576760) –