2013-05-22 13 views
8

Jestem nowy Objective-C i mam problemy z cała nonatomic, strong, weak, itd. Zastanawiam się, czy nie będę miał żadnych problemów z wykorzystaniem Core Datafloat wartości, które są zdefiniowane jak więc:Deklarowanie pływa w Objective C

@property (nonatomic) float * rating; 
@property (nonatomic) float * mRating; 

Czy powinienem zadeklarować inaczej?

Odpowiedz

14

Tak, należy zadeklarować je bez gwiazdkami:

@property (nonatomic) float rating; 
@property (nonatomic) float mRating; 

Gwiazdki wskazują wskazówek. Wszystkie klasy Cel C są zadeklarowane z gwiazdkami, ponieważ instancje odwołują się do wskaźników. Prymitywy, takie jak float s, int, itp. Są zdefiniowane jako wartości, tj. Bez gwiazd. To samo dotyczy typów typowanych, takich jak CGFloat i NSInteger: pola skalarne tych typów powinny być zdefiniowane bez gwiazdki.

+1

Powinieneś także użyć 'CGFloat' zamiast' float'. –

+0

Świetnie! Dzięki! Właśnie z czystej ciekawości, dlaczego nie chcesz używać gwiazdek? – BlackHatSamurai

+1

@Blaine - Ponieważ gwiazdka to zupełnie inna bestia - wskaźnik w stosunku do prostej "wartości skalarnej". Jeśli nie rozumiesz różnicy, którą naprawdę musisz przestudiować na wskaźnikach i obiektach, zanim pójdziesz dalej z Objective-C. –

0

Powinieneś zdecydowanie stracić *, chyba że chcesz stworzyć wskaźnik. Poza tym wygląda świetnie!

+1

"stracić", a nie "poluzować". – rmaddy