To jest dwuczęściowe pytanie w nadziei, że mogę zrozumieć więcej na ten temat.Wyjaśnienie deklaracji własności iOS
1) Wydaje mi się, że masz dwie popularne możliwości deklarowania właściwości dla klasy w objective c
. Jednym z nich jest dodanie właściwości do treści klasy nagłówka, np.
@interface MyClass : NSObject {
NSArray *myArray;
}
Albo można go dodać po organizmie @interface
i przed stwierdzeniem @end
Podobnie jak.
@interface MyClass : NSObject {
//
}
@property (nonatomic, retain) NSArray *myArray;
Jaka jest różnica między tymi dwoma „style” i kiedy wybrać jeden nad drugim?
2) po @property
można znaleźć opcje, takie jak (nonatomic, retain)
. Co to jest i dlaczego używasz różnych opcji?/
Ta jedyna odpowiedź to część 2 pytania. Odpowiedź Simona omawia część 1. –
@MarkAmery oczywiście - czułem, że część pierwsza była naprawdę podstawowa, a inne odpowiedzi obejmowały to, gdy odpowiadałem. Nie musisz tutaj dodawać duplikatów. –
# 2 jest całkowicie niepoprawny. właściwości "atomowe" * nie * zapewniają bezpieczeństwo wątków; raczej zapewnia atomowość. Jeśli zarówno wątek A, jak i wątek B są pisane, 'atomowy' zapewnia, że wynik będzie całkowitą wartością, oznaczającą jeden lub drugi. Która z nich jest niezdefiniowana. Pisanie kodu bezpiecznego dla wątków nie jest tak proste, jak użycie właściwości 'atomowych'. Zobacz sekcję "Synchronizacja" w przewodniku po wątkach: http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Multithreading/ThreadSafety/ThreadSafety.html#//apple_ref/doc/uid/10000057i -CH8-SW1 –