Xcode Behaviors – bardzo użyteczne narzędzie

Różne rzeczy można powiedziec o IDE jakim jest Xcode. Pozytywne i negatywne. Mimo wielu zmian na lepsze, wciąż można by znaleźć wiele elementów tej aplikacji, które wymagają poprawki. Lecz nie o tym chciałem napisać. Dzisiaj kilka słów o możliwości konfiguracji zachowań Xcode, w zależności od pewnych zdarzeń, które nastąpią podczas developmentu aplikacji.

Czytaj dalej Xcode Behaviors — bardzo użyteczne narzędzie

Narzędzia developerskie w Mac OS X

Wszytkie poniżej przedstawione programy są dołączone do każdej dystrybucj systemu
Mac OS X.

Pakiet ten nie jest skomplikowany w obsłudze, korzysta się z niego bardzo przyjemnie, lecz początkującego developera może nieco przytłaczać. Warto poświęcić czas na naukę i poznanie możliwości narzędzi developerskich Apple. Czas poświęcony na to, na pewno zwróci się potem w szybkości tworzenia aplikacji

Oto prezentacja dostępnych narzędzi.

Czytaj dalej Narzędzia developerskie w Mac OS X

XCode – properties w Objective-C – warningi kompilacji

Stawiając swoje (ciągle jeszcze dosyć początkujące) kroki w świecie Objective-C natrafiłem na ciekawy problem podczas kompilacji programu w Objective-C z wykorzystaniem mechanizmu

@property

Ostrzeżenia, które generował XCode zaciekawiły mnie i skupiły na sobie moją uwagę.

Xcode - błąd kompilacji properties
Xcode - błąd kompilacji properties

Po chwili śledztwa znalazłem przyczynę takiego zachowania.

Kod który generował ostrzeżena miał postać:

@interface Route : NSObject {
	NSArray* stops;
	NSString* name;
	int _id;
}
@property(nonatomic, readwrite) NSArray* stops;
@property(nonatomic, readwrite) NSString* name;
@property(nonatomic, readwrite) int _id;

Ostrzeżenia kompilatora pojawiały się w pliku z implementacją:

XCode - warningi kompilacji - @property
XCode - warningi kompilacji - @property

Poprawny kod (nie będący przyczyną takich błędów) ma postać:

@interface Route : NSObject {
	NSArray* stops;
	NSString* name;
	int _id;
}
@property(nonatomic, readwrite, retain) NSArray* stops;
@property(nonatomic, readwrite, retain) NSString* name;
@property(nonatomic, readwrite) int _id;

Wnioski:
Przyczyną takiego zachowania, jest błąd programisty. Developer musi zdefiniować metodę przypisywania wartości atrybutów klasy będących wskaźnikami na jakieś obiekty. Do dyspozycji mamy 3 możliwości:

retain
assign
copy