declared-property

Objective - C zadeklarowane atrybuty @ property (nonatomic, copy, strong ,weak)

Czy ktoś może mi wyjaśnić szczegółowo kiedy muszę używać każdego atrybutu: nonatomic, copy, strong, weak, i tak dalej, dla deklarowanej nieruchomości, i wyjaśnić, co każdy robi? Jakiś przykład też byłby świetny. Używam ARC.

Czy zadeklarowane właściwości wymagają odpowiedniej zmiennej instancji?

Czy właściwości w Objective-C 2.0 wymagają zadeklarowania odpowiedniej zmiennej instancji? Na przykład, jestem przyzwyczajony ... mic, retain) NSString *name; @end Czy to jest nadal ważne? I czy w jakiś sposób różni się od mojego poprzedniego przykładu?

Czy właściwość NSString pod ARC powinna być mocna czy kopiowana?

Gdy nie kompiluje się z ARC, zaleca się stosowanie właściwości copy dla typów danych, takich jak NSString. Nie mogłem znaleźć odpowiedniej dokumentacji na temat używania copy w trybie ARC. Czy ktoś może mi powiedzieć co ma zastosowanie do ARC?

mój widok.rama.pochodzenie.x = wartość; nie działa - ale dlaczego?

Wiem, że nie mogę tego użyć: myView.frame.origin.x = 25.0; I że muszę użyć tego zamiast: CGRect myFrame = myView.frame; ... aje "Expression not assignable". Jakiś czas temu pojawił się błąd kompilacji "lvalue wymagane jako lewy operand przypisania".

Get property name as a string

Potrzebuję sposobu, aby przekazać nieruchomość i dostać nazwę przypisaną do niej. Jakieś sugestie? @property (nonatomic, ret ... ject *crazyObject; NSString *str = SOME_WAY_TO_GET_PROPERTY_NAME(crazyObject); // Above method should return @"crazyObject"

Dlaczego zadeklarowana Właściwość używa zarówno retain, jak i readonly?

Zauważyłem, że niektóre przykłady Apple zawierają zarówno modyfikator retain i readonly właściwości. Jaki jest sens włączania ... y, gdy używamy modyfikatora readonly? Przykład: @property (retain, readonly) NSString *title; z przykładu AnimatedTableView.

Czy @synchronized (self) tworzy blok, w którym prefiks self jest niepotrzebny we właściwościach?

Przeczytałem coś w jakimś obcym kodzie i chcę sprawdzić moje założenie: @synchronized(self) służy do pozbycia się prefiksu ... tring * strText = @"var in function"; @synchronized(self) { strText = @"var class (self.strText)"; } }