1 din 8
1
Xcode
  [ Ignoră ]
Avatar
RankRankRank
Member
Din: Cluj-Napoca
Macuser din: 27.10.08

M-am jucat cu programare puțin în Delphi și foarte puțin în Visual Studio. Nu am pretenții de programator, dar îmi place să îmi scriu unele aplicații de care am nevoie. Am instalat de curând Xcode, dar nu m-am descurcat deloc cu el. Eram obișnuit din celelalte medii sa pun obiectul pe un form, să dau dublu click și să mi se deschidă o fereastră unde să pot scrie cod atașat butonului sau obiectului în cauză. Care e filosofia în Xcode, pe scurt? Cum pot crea un buton care dacă îl apăs, de exemplu, să modifice textul dintr-un Edit Box sau să închidă aplicația?

 Semnătură 

We spent a lot of time in simulators, we were going to do it right  Wally Schirra

Profil
 
  [ Ignoră ]   [ # 1 ]
RankRank
Jr. Member
Din: Timisoara
Macuser din: 15.10.07

Salut,

S-ar putea sa fie putin mai complicata programarea pe Mac decat ce stii tu. Aici folosesti doua programe pentru a programa. Interfata grafica o faci in Interface Builder (xib/nib), codul il scrii in XCode.

Cauta cartea Cocoa(R) Programming for Mac(R) OS X de Aaron Hillegass (hint: Amazon). Iti explica f. frumos despre concepte de baza in programarea pt Mac (despre xib/nib, bindings, kvo, etc).

Daca ai fi fost din Timisoara am fi putut aranja de o intalnire la un macuser meeting.

M.

Profil
 
  [ Ignoră ]   [ # 2 ]
Avatar
RankRankRank
Member
Din: Bucuresti
Macuser din: 11.10.05

Salut

Exemplul clasic “Hello World” pentru un proiect Cocoa se chema “Temperature Converter” si demonstreaza interactiunea Xcode<->Interface Builder
Vezi aici un screencast: http://www.viddler.com/explore/byucocoaheads/videos/1/

Mai sunt o gramada daca cauti pe Google.

Programatul cu ObjC/Cocoa nu e mai complicat decat Visual Studio-ul MS, sunt doar alte solutii/metafore care cer timp de acomodare.

Profil
 
  [ Ignoră ]   [ # 3 ]
Avatar
RankRankRankRank
Sr. Member
Din: Pfaffing
Macuser din: 30.10.06

Ceea ce vrei tu să faci în Xcode se numește : GUI-based application - “Graphical User Interface” - O Aplicație care conține ȘI o interfață grafică pentru a putea fi utilizată. Mai toate conțin.
Un exercițiu !
1. Deschide Xcode.app
2. Din bara de meniu a lui Xcode - alege submeniul “New Project…” din meniul “File” sau ⇧⌘N
3. Se va deschide o nouă fereastră - “New Project” - “Imagineazăți un birou cu sertare la stâng și la drepta” În partea stângă se află o listă (Meniu Stânga sau Principal - Dosare) cu dosare care îți redă o serie posibilități pentru viitoarea aplicație / funcție pe care vrei să o implementezi. În dreapta (Meniu Dreapta sau Secundar ori Fereastră Aplicații / Funcții), în care fiecare dosar din “Meniul Principal”  va afișa o serie de posibilități care vor fi responsabile de construirea viitoarei aplicații / funcții, care sunt redate în această parte a ferestrei. În jos-dreapta (Fereastră Descriere) apare o mică descriere pentru fiecare metodă de sus-dreapta, pentru ați face cât mai clar cu ce se ocupă ea.
4. Alege din Meniul Principal - “Applications”
5. Alege din Meniul din Drepta - “Cocoa Application”
6. Se va deschide o supra fereastră în care trebuie să îi dai nume viitoarei aplicații - “Denumește-o” și alege locul unde ea va fi salvată - Nemele unei aplicații ar trebui să înceapă cu o majusculă. În cazul nostru în dăm numele de “SimpleGUIApp” Adică o aplicație simplă cu “Graphical User Interface”.
7. Se va deschide o fereastră “Info.plist - SimpleGUIApp” care va conține toate informațiile viitoare aplicații. Sus are un meniu cu butoane / funcții active. În partea stângă se află o listă (Meniu Stânga sau Principal denumit “Guoups & Files”) care îți redă toate dosarele și fișierele care le va conține aplicația ta. În dreapta (Meniu Dreapta sau Secundar ori Fereastră Fișiere), redând tot conținutul dosarului din Stânga. În jos-dreapta (Fereastră Cod numit “Editor”) apare codul în sine al aplicației tale, pentru fiecare fișier din fiecare dosar. Cod deja scris de către Xcode, sau de tine.
8. Acum ne vom accentua pe MainMenu.xib sau .nib care îl găsești la : fereastra aplicației din Xcode, la noi “Info.plis - SimpleGUIApp” > Groups & Files > “SimpleGUIApp” > Resources > MainMenu.xib - dublu click pe acesta.
9. Se va deschide aplicația Interface Builder, cu trei ferestre : Una dedicată lui ManiMenu.xib (English - de obicei), care va cuprinde toate informațiile / funcțiile “GUI” ale aplicației tale. Alta cu “Meniul Principal - MainMenu” care va fi în bara de meniu a lui Mac OS X,  atunci când deschizi aplicația ta în mod normal. Și alta cu “Fereastra aplicație tale - Window”. În care te vei juca după propriul plac, utilizând intrumentele “Inspector” ⇧⌘I și “Libray” ⇧⌘L, pentru început, de la meniul “Tools” din Interface Builder:
10. Acum vom pune butoane și text.  Alege submeniul “Inspector” ⇧⌘I și “Libray” ⇧⌘L, din meniul “Tools” a lui Interface Builder.
11. Punem butoane: Alege Tools > Library > View & Cells > Buttons > Push Button (NSButton). Selectează-l si fă drag & drop a lui “Push Button” în fereastra “Window”. Repetă acțiunea de două ori, adică pune două butoane, unde vrei tu în acea fereastră.
12. Dăm nume butoanelor. Ai doua căi : a) dublu click și îi dai nume, sau alegi Tools > Inspector > Button Attributes > Title și îi dai nume. Eu le-am denumit, cel din stânga “Get to 10” iar cel din drepata “Reset”
13. Pumen text: Alege Tools > Library > View & Cells > Inputs & Values >Label (NSTextField). Selectează-l si fă drag & drop a lui “Label” în fereastra “Window”.
14. Vrem să adăugăm fiecărui buton, și nu numai, funcții (Classes mai exact). Te duci în Xcode.app acum. Xcode.app alegi fereastra deja deschisă, “Info.plist - SimpleGUIApp”, în aceasta în “Meniul Principal” alegi “SimpleGUIApp” > Classes, pur și simplu îl selectezi, atâta tot. Aceasta e nevoie pentru ca funcțiile să fie salvate la locul lor, altfel vor fi salvate acolo unde ai selectat ultima oară, probabil în Resources.
15. Creem codul acțiunilor. Din bara de meniu a lui Xcode - alege submeniul “New File…” din meniul “File” sau ⌘N
16. Se va deschide o nouă fereastră - “New File” - Aceeași poveste ca și la punctul 3.
17. Alege din Meniul Principal - “Cocoa”
18. Alege din Meniul din Drepta - “Objective-C class”
19. Se va deschide o supra fereastră în care trebuie să îi dai nume viitoarei acțiuni - “Denumește-o” și vezi să îl salvezi în folderul aplicației tale, cazul nostru “SimpleGUIApp” - Nemele unei acțiuni TREBUIE să fie cu majuscule scris pentru primele 2 sau 3 litere. O acțiune va avea tot timpul 2 sau 3 litere ca și prefix. În cazul nostru are două și în dăm numele de “MEFoo” Unde primele doua litre “ME” sunt pentru “My Experiment”. Nu folosi niciodata, cel puțin pentru început, “NS” aceastea sunt pentru acțiunile lui Apple, din Xcode, ca să nu ajungi la confuzii. “NS” sunt pentru NeXTStep, unde, la ora actuală, sistemul de operare Mac OS X se bazează pe acest NeXT.(e o altă poveste)
20 Acum facem legăturile între acțiuni și funcțiile noastre (butoane etc.). Treci în Interface Builder. Alege Alege Tools > Library > Objects & Controllers > Object (NSObject). Selectează-l și fă drag ^ drop în fereastra MAinMenu.xib (English) care se află deja în Interface Builder deschisă.
21. Denumim acțiunile. În MainMenu.xib (English) trebuie să ai selectat “Object”. Tocmai ce l-ai pus acolo. Acum alegi Tools > Inspector > Identity Inspector (Object Identity) sau ⌘6. Unde la Class Identity > Class alegi din lista desfășurată, sau scri, “MEFoo”, cazul nostru. În MainMenu.xib “Object” se va trasnforma în “Foo”. La Class Identity > Class Actions vei adăuga două acțiuni : apasă pe plus și prima acțiune lanoi se va numi - “getTo19:” a doua se va numi “reset:”, fără ghilimele dar să nu uiți cele două puncte. La Class Identity > Classs Outles vei adăuga “textFiled”, fără ghilimele, aici nu trebuie două puncte.
22. Acum facem conexiunile dintre acțiuni și butoane etc. Te duci în fereastra “Window” din Interface Builder. Selectezi butonul “Get to 10”. Ții apăsată tasta “Control” (ctrl), în timp ce ai selectat butonul “Get to 10” tragi cu “soricelul” (maus) dinspre acel buton spre “Foo” din MAinMenu.xib. O linie albastra se va face vizibilă, când te afli poziționat pe “Foo” numai ține apăsat tastele, va apărea o fereastră mică (neagră) “Recived Actions”, în care ai două opțiuni ; “getTo10” și “reset”, evident, vei alege “getTo10” pentru butonul “Get to 10”. Aceași manevră pentru butonul “Reset” dar vei alege “reset”. Acceași manevră, dar dinspre “Foo” spre “Label”, unde vei alege “textField” din acea fereastră mică “Outlets”.
23. Acum aplicăm codurile în Xcode. În timp ce ai selectată fereastră MainMenu.xib, alegi “Write Class Files…” din meniul “File” a lui Interface Builder. Se va deschide o fereastră “Save”.La Save As: trebuie să scri, dacă nu este deja scris, “MEFoo”, cazul nostru. Apeși “Save” și “Replace”. Astfel reactualizăm acțiunile din “Classes”, de la “SimpleGUIApp” > Classes > MEFoo.h și MEFoo.m, cu noile acțiuni pe care noi le-am creat.
24. Adăugăm un cod. În MEFoo.m codul arată așa :

#import "MEFoo.h"

@implementation MEFoo
- (IBAction)reset:(id)sender 
{
    
}

- (IBAction)setTo10:(id)sender 
{
    
}
@end 

iar în MEFoo.h așa :

#import <Cocoa/Cocoa.h>

@interface MEFoo NSObject 
{
    IBOutlet id textFiled
;
}
- (IBAction)reset:(id)sender;
- (
IBAction)setTo10:(id)sender;
@
end 

După ce adăugăm codul nostru în MEFoo.m,  MEFoo.m trebuie să arate așa :

#import "MEFoo.h"

@implementation MEFoo
- (IBAction)reset:(id)sender 
{
    [textField setIntValue
:0]
}

- (IBAction)setTo10:(id)sender 
{
    [textField setIntValue
:10]
}
@end 

25. Compilara aplicației (Rock it!!) Apasă pe “Build and Go”. Se va lansa aplicația tocmai creată. Acum încearcă să vezi ce a ieșit.

BAFTĂ

 Semnătură 

Localizare Mac OS X 10.5.8

Profil
 
  [ Ignoră ]   [ # 4 ]
Avatar
RankRankRankRank
Sr. Member
Din: Pfaffing
Macuser din: 30.10.06

Au uitat să menționes în postul precedent.
Pentru ca atunci când deschizi aplicația să nu îți apară într-un mod sec textul, citit “Label”. Mai adaugă la MEFoo.m încă o funcție. Aplicația se va deschide direct cu cifra “0” - Zero, la text.
Astfel, după ce ai adăugat, MEFoo.m va arăta așa :

#import "MEFoo.h"

@implementation MEFoo
- (IBAction)getTo10:(id)sender 
{
    [textField setIntValue
:10];
}

- (IBAction)reset:(id)sender 
{
    [textField setIntValue
:0];
}

- (void)awakeFromNib 

    [textField setIntValue
:0]
}
@end 
 Semnătură 

Localizare Mac OS X 10.5.8

Profil
 
  [ Ignoră ]   [ # 5 ]
Avatar
RankRankRankRank
Sr. Member
Din: Iasi
Macuser din: 18.10.06

Caută cartea Cocoa Programming for MacOsX unde ai explicat destul de bine în ce constă programarea în Cocoa/Obj-C. Exemplul lui Eugen, M. e din această carte.

 Semnătură 

Profil
 
  [ Ignoră ]   [ # 6 ]
Avatar
RankRankRankRank
Sr. Member
Din: Pfaffing
Macuser din: 30.10.06

Cartea sugerată de Alex Toderascu este foarte bună. Țin doar să menționez că eu nu beneficiez de ea.
Eu am o alta, în care este menționată cartea “Cocoa Programming for Mac OS X” de Aaron Hillegass.

 Semnătură 

Localizare Mac OS X 10.5.8

Profil
 
  [ Ignoră ]   [ # 7 ]
RankRank
Jr. Member
Din: București
Macuser din: 03.08.09

Buna. Imi puteti recomanda si mie un mediu IDE complet (compilator/interpretor, editor, debugger)? Ma intereseaza Java, dar si C. Nu-mi permit Xcode, nu am discul cu el, iar de pe internet descarcarea ar dura o vesnicie. As vrea sa fie free, si mai mic, din motivul expus inainte. V-as fi recunoscator daca mi-ati indica niste site-uri cu soft pentru Mac de acest gen.

Profil
 
  [ Ignoră ]   [ # 8 ]
Avatar
RankRankRankRank
Moderator
Din: Cluj-Napoca
Macuser din: 26.01.06

dar tu esti singur pe lume? n-ai niciun prieten care sa-ti descarce 2G?

 Semnătură 

Mcintoshing…

Profil
 
  [ Ignoră ]   [ # 9 ]
Avatar
RankRankRank
Member
Din: Vienna, Austria
Macuser din: 19.10.08

Eu downloadez Xcode în 10 minute, ce Internet ai tu?

Pentru Java ai NetBeans. Știe și C/C++ dar e cam praf.

 Semnătură 

Membru retras.

Profil
 
  [ Ignoră ]   [ # 10 ]
Avatar
RankRankRank
Member
Din: Cluj-Napoca
Macuser din: 27.10.08

Whoa, am aruncat postul si am uitat sa ma mai uit pe aici… (pentru ca pe mail nu am mai primit nicio notificarem desi tin minte ca m-am abonat la discutie)
Multumesc tutror pentru exemple si idei. O sa mai sap in XCode cand timpul imi mai permite si primul lucru pe care o sa il fac este exemplul lui Eugen M.
Intre timp, oarecum descurajat de complexitatea XCode, ma gandeam sa incerc sa ma joc cu Lazarus/FreePascal. Darian, poate te ajuta. Nu este C sau Java, dar poti scrie aplicatii extrem de comod si rapid, pentru toate trei platformele, Widnows, Linux si Mac OS X. In plus, in mod normal, proiectele scrise in Lazarus ar trebui sa poata fi compilate si in Delphi iar reciproca este si ea uneori adevarata.

 Semnătură 

We spent a lot of time in simulators, we were going to do it right  Wally Schirra

Profil
 
  [ Ignoră ]   [ # 11 ]
RankRank
Jr. Member
Din: București
Macuser din: 03.08.09

@.ral:cr dar tu esti singur pe lume? n-ai niciun prieten care sa-ti descarce 2G?
Sunt cam singur, de fapt am un handicap, si sunt cam izolat.

@Aram Eu downloadez Xcode în 10 minute, ce Internet ai tu?

Pentru Java ai NetBeans. Știe și C/C++ dar e cam praf.

Am un internet lent (max. 15 Kb/s, poate nu va vine sa credeti, dar asta e, nu mint).
Nu stiu de NetBeans, este un IDE ? Eu as vrea un IDE complet, ca sa nu-mi pierd timpul cautand si alte unelte. Va rog sa-mi spuneti si mie unde sa caut.

Profil
 
  [ Ignoră ]   [ # 12 ]
RankRank
Jr. Member
Din: București
Macuser din: 03.08.09

Pentru Amiralul- multumesc pentru sugestie, dar am inteles ca pentru Lazarus/FreePascal trebuie sa ai Xcode preinstalat. Astept si alte sugestii si multumesc anticipat.

Profil
 
  [ Ignoră ]   [ # 13 ]
Avatar
RankRankRank
Member
Din: Cluj-Napoca
Macuser din: 27.10.08

Da? Nu stiam…

 Semnătură 

We spent a lot of time in simulators, we were going to do it right  Wally Schirra

Profil
 
  [ Ignoră ]   [ # 14 ]
RankRank
Jr. Member
Din: București
Macuser din: 03.08.09

Nici eu nu stiam, am descarcat FreePascal, a durat ceva, si apoi n-a vrut sa mearga, asa ca l-am sters. E drept ca n-am luat si Lazarus, doar Pascal-ul, dar ce este Lazarus, pana la urma? N-am prea inteles ce spunea acolo pe site.

Profil
 
  [ Ignoră ]   [ # 15 ]
Avatar
RankRankRankRank
Moderator
Din: Cluj-Napoca
Macuser din: 26.01.06

ce sistem ai?
daca imi spui pe privat cum te pot gasi iti fac eu un dvd cu ultimul xcode. numai sa ai leopardul cat mai updatat ca probabil asa o sa-l ceara, de tiger nu sunt sigur dar posibil sa nu mearga.

 Semnătură 

Mcintoshing…

Profil
 
   
1 din 8
1
 
‹‹ .      Intrebare A/UX ››