პირველი ნაბიჯები Mac-ზე: დამწყებთათვის OS X-ის შესახებ. პროგრამირება Mac OS X-ში: წერა iPhone-ისთვის "Fn" კლავიშის სასარგებლო ფუნქციები

ამ თემაში მე გაჩვენებთ, თუ როგორ უნდა დაწეროთ მარტივი აპლიკაცია iPhone-ისთვის ოფიციალური SDK-ის გამოყენებით. მისი მიღება მარტივია, საჭიროა:
1. Intel-ზე დაფუძნებული Mac (თუმცა ის ასევე მუშაობს PowerPC-ზე, მაგრამ გარკვეული ჩხუბის შემდეგ)
2. iPhone SDK. მე დავწერ ბეტა 2-ში. შეგიძლიათ მიიღოთ უახლესი ვერსია დარეგისტრირებით developer.apple.com-ზე. ბეტა 2 შეგიძლიათ ნახოთ ტორენტებში

გამარჯობა ჰაბრ

იმისათვის, რომ მოსკოვი ზედმეტად არ დავძაბოთ, ჩვენ გავაკეთებთ უმარტივესს: აპლიკაცია უბრალოდ აჩვენებს Habr-ის ლოგოს. გახსენით XCode (აუცილებელია 32 ბიტიანირეჟიმი) და შექმენით ახალი Cocoa Touch აპლიკაცია:

მოდით ვუწოდოთ მას HelloHabr და შეინახოთ იგი სამუშაო მაგიდაზე.

პროექტების შექმნის ოსტატმა ეს უკვე გააკეთა ჩვენთვის. მოდით შევხედოთ main.m-ის შინაარსს:
#იმპორტი

Int main (int argc, char *argv)
{
NSAutoreleasePool * pool = [init];
//რადგან თქვენ არ შეგიძლიათ გამოიყენოთ ნაგვის შეგროვება iPhone-ზე, ჩვენ ვიყენებთ ავტორელიზის აუზს, რათა ცხოვრება გაგიადვილოთ
int retVal = UIApplicationMain(argc, argv, nil, @"HelloHabrAppDelegate");
//აპლიკაციის დასაწყებად, თქვენ უნდა გამოიძახოთ ეს ფუნქცია. @"HelloHabrAppDelegate" - კლასი, რომელსაც გადაეცემა კონტროლი
;
დაბრუნების retVal;
}

ახლა მოდით შევხედოთ HelloHabrAppDelegate.h:
#იმპორტი

და HelloHabrAppDelegate.m-ზე:
#იმპორტი "HelloHabrAppDelegate.h"
#იმპორტი "MyView.h"

@implementation HelloHabrAppDelegate
//ეს დირექტივები ნიშნავს, რომ კომპილაციის დროს, .-ზე დარეკვის ნაცვლად, შეიყვანეთ მიმღებები და სეტერები
ფანჯრის სინთეზირება;
სინთეზირება contentView;

//ფუნქცია დელეგირებულია UIA აპლიკაციიდან
- (ბათილი)აპლიკაციადასრულდა გაშვება:(UIAაპლიკაცია *)აპლიკაცია (
// შექმენით მთავარი ფანჯარა
self.window = [[ initWithFrame:[ bounds]] autorease];
// შექმენით contentView
self.contentView = [[ initWithFrame:[ applicationFrame]] autorease];
//დაამატეთ ჩვენი contetntView მთავარ ფანჯარაში ისე, რომ ის გამოჩნდეს
;
// გახადე მთავარი ფანჯარა ხილული
;
}

- (ბათილი)დილოკ (;
;
;
}

ტექნიკის მცირე ნაწილი დასრულებულია, დავიწყოთ განაცხადის წერა. შეინახეთ habr ლოგო აპლიკაციის საქაღალდეში. შემდეგ გადაიტანეთ იგი საქაღალდიდან XCode ფანჯარაში ჩვენი პროექტის რესურსების საქაღალდეში:

ახლა მოდით დავამატოთ ახალი ველი "habrView" ტიპის "UIImageView *" MyView კლასში, ე.ი. MyView.h ასე გამოიყურება:
#იმპორტი

ახლა განვსაზღვროთ init და dealloc პროცედურები MyView კლასში:
#იმპორტი "MyView.h"

@immplementation MyView
- (id) initWithFrame:(CGRect)frame (if(self = ) (
//ფონის ფერი - შავი
];
//ახალი ობიექტის შექმნა habr ლოგოს გამოსახულებით
UII გამოსახულება *image = ;
//შექმენით კომპონენტი, რომელიც აჩვენებს ლოგოს
self->habrView = [ initWithFrame:CGRectMake(0, 0, .width, .height)];
;
];

;
//ფორმაში დაამატეთ habr ლოგოს ჩვენების კომპონენტი
;
}
თავის დაბრუნება;
}

- (ბათილი) dealloc (;
;
}
დასასრული

ყველა. ჩვენ ვაგროვებთ, ვაწარმოებთ და ვიღებთ იმას, რაც გვინდოდა:

ახლა კი მეთოდი ზარმაცებისთვის აპლიკაციების შესაქმნელად. Dashcode-ს შეუძლია შექმნას ვებ აპლიკაციები iPhone და iPod Touch-ისთვის. გახსენით Dashcode და აირჩიეთ RSS შაბლონად. გადადით გვერდის ატრიბუტების ჩანართზე, დააყენეთ გვერდის სათაური: „Harbrahabr RSS“, არხის URL: „feed://habrahabr.ru/rss/main/“. შემდეგ გადადით "Harbrahabr RSS" ჩანართზე (დიზაინერი გაიხსნება) და შეცვალეთ წარწერა "My RSS Feed" "Habrahabr RSS Feed"-ზე:

დააწკაპუნეთ Run-ზე და მიიღეთ Habr's RSS reader:

ძირითადად ყველაფერი. ველოდები მიმოხილვებს, სურვილებს, წინადადებებს კომენტარებში

განახლება:ფორმატირება ცოტა დავაზუსტე, კოდი უკეთ იკითხება, მაგრამ იდეალურისგან შორს არის

რამდენიმე თვეა სახლში ვიყენებ MacBook Pro-ს და მაინტერესებს იყო თუ არა კარგი წიგნი ან სახელმძღვანელო, რომელიც დამეხმარება გავხდე უკეთესი Mac პროგრამისტი. შესაძლოა Mac-ის ექვივალენტი ლინუქსის პროგრამირების დასაწყებად. შენიშვნა. მე არ ვეძებ რესურსს Mac აპლიკაციის დაპროგრამების შესახებ, სამაგიეროდ, ვეძებ უფრო ზოგად სახელმძღვანელოს Mac-ის გამოყენების ზოგადი განვითარების გარემოში.

როგორც ფონზე, მე ვარ Windows პროგრამისტი ყოველდღიურად. მე ასევე გავაკეთე რამდენიმე Linux და BSD პერსონალი წლების განმავლობაში, განსაკუთრებით სკოლაში, როგორიცაა სოკეტის პროგრამირება, გრაფიკა, ინსტალაციის ტიპის მასალები. სახლში გავაკეთებ Java, Scala, PHP და ა.შ. Mac-ზე.

აქამდე გამოვიყენე Eclipse, QuickSilver და TextMate. VMWare Fusion, XCode და NetBeans კონფიგურირებულია, მაგრამ მე მათ არ ვიყენებ. DVI KVM გადამრთველი უერთდება რეალურ კლავიატურას, ტრეკიბოლს და მონიტორს. ახლახან დავრჩი MacPorts-თან გვიან ბრძოლამდე და მივხვდი, რომ მჭირდებოდა x86_64. ყველაზე დიდი პრობლემა, რაც მე შემხვედრია, არის PHP-ის დაყენება. არ ვიცი, რატომ არ მოდიან MySQL და GD ბიბლიოთეკა. საბოლოოდ მივხვდი, რომ ეს იყო Googling და შევქმენი გაფართოებები წყაროდან. ვგრძნობ, რომ მე არ მიმიღია მემორანდუმი ან არ წამიკითხავს ძირითადი გაკვეთილი იმის შესახებ, თუ როგორ გავხდე Mac პროგრამისტი, მაგალითად, როგორ მუშაობს მთელი არქიტექტურა. როგორ შეიძლება Windows პროგრამისტი იყოს საკმარისად პროდუქტიული Mac OS X-ზე?

შეცვლა. კონკრეტული ტიპის აპლიკაციის შემუშავება, ჩემი აზრით, არ აქვს მნიშვნელობა. ეს შეიძლება იყოს Java, Scala, PHP, როგორც აღვნიშნე, ან კაკაო, C++ ან სხვა.

მე ვეძებ კონკრეტულ წიგნს, რესურსს, რჩევებს იმის შესახებ, თუ როგორ უნდა ვიყო უფრო ეფექტური Mac პროგრამისტი, სასურველია რაღაცის მიღმა "დააინსტალირო XYZ".

6 პასუხი

როგორც ჩანს, თქვენ გჭირდებათ მიმოხილვა, თუ როგორ მუშაობს Mac OS X სისტემის დონეზე, ვიდრე ინსტრუმენტების გადახედვა და ა.შ. თუ ეს მოხდება, დავიწყებ Apple-ის (ძირითადი) Mac OS X სისტემის არქიტექტურის სახელმძღვანელოთი, შემდეგ გადავალ Mac OS X-ის დაწყებაზე, რომელიც მოგცემთ საკმარის მიმოხილვას დასაწყებად.

თქვენი კითხვიდან გაუგებარია, რის გაკეთებას აპირებთ თქვენს პროგრამირებასთან, მაგრამ თუ გადაწყვეტთ განაგრძოთ Cocoa/OS X-ის განვითარება, გირჩევთ Cocoa Programming for Mac OS X-ისთვის Aaron Hillegass-ის მიერ.

დაახლოებით ხუთი წლის წინ Windows-დან Mac OS X-ზე გადაყვანის შემდეგ, ხშირად ვხვდები იმავე აზრს. მე უბრალოდ ვერ ვიქნები პროდუქტიული ვინდოუსზე (ისეთი პროდუქტიული, როგორც შემიძლია ვიყო), როგორც შემიძლია Mac OS X-ზე.

მართალი გითხრათ, Mac OS X-სა და Windows-ს შორის ბევრი მცირე განსხვავებაა. ყველაზე დიდი მიზეზი იმ ადამიანებისთვის, ვინც ასე ფიქრობს (ჩვეულებრივ მხოლოდ გეიმერები და დეველოპერები) არის ის, რომ ისინი ცდილობენ გამოიყენონ Mac, როგორც Windows მანქანა. თქვენ უნდა ისწავლოთ იმის მიღება, რომ თქვენ უნდა გამოიყენოთ ბრძანების ღილაკი და არა საკონტროლო ღილაკი და ა.შ.

როგორც ჩანს, თქვენ იყენებთ Mac-ს, რადგან თქვენ უნდა გააკეთოთ ის, რაც გსურთ. ეს მართლაც ბევრად უკეთესია ვიდრე ვინდოუსს, როცა შეეგუებით.

მე ვფიქრობ, რომ Windows-ის ბევრი პროგრამისტი მოდის Mac-ზე და არ ცდილობს ამის სწორად სწავლას, რადგან ისინი თვითკმაყოფილნი არიან და ფიქრობენ, რომ ყველაფერი იციან, რადგან "მთელი ცხოვრება იყენებდნენ Windows-ს". ვფიქრობ, როგორც კი აღმოაჩენთ Spotlight, Expose, "Mac OS X კლავიატურის მალსახმობებს" და ა.შ. თქვენ აღმოაჩენთ, რომ თქვენ თავად ხართ ბევრად უფრო პროდუქტიული, ვიდრე ოდესმე იყავით Windows-ზე... და ეს ნამდვილად სახალისო ოპერაციული სისტემაა გამოსაყენებლად.

შეამოწმეთ რამდენიმე საუკეთესო Mac აპი, რომელიც შეგიძლიათ მიიღოთ და. თქვენ ასევე შეგიძლიათ მოძებნოთ "ტოპ 100 Mac აპი".

ასევე, შევამჩნიე, რომ თქვენ ცდილობდით რაიმე სახის ვებ სერვერის დაყენებას პირდაპირ Mac OS X-ში. მას მოყვება ერთი, მაგრამ თუ აპირებთ MySQL-ის და სხვა გაფართოებების დამატებას, მე არ წავიდოდი MacPorts მარშრუტზე. მიიღეთ VMWare Fusion ან VirtualBox (ღია წყარო) და გაუშვით სერვერი ვირტუალურ მანქანაში. ბევრად უფრო სუფთა. მე მაქვს Subversion/trac FreeBSD VM, რომელიც აკონტროლებს ჩემს ლოკალურ ვერსიებს.

დავამატებ, რომ თუ ამჟამად არ იყენებთ Xcode-ს, აუცილებლად უნდა ისწავლოთ და გამოიყენოთ რაც შეიძლება მალე. ეს ბევრად უკეთესი IDE გამოსაყენებელია, ვიდრე Visual Studio და გაგიადვილებთ ცხოვრებას.

არ დაგავიწყდეთ, რომ მაშინ, როცა ალბათ წლები გაატარეთ Windows-ის დამხმარე საიტებზე, იგივე უნდა გააკეთოთ Mac-ზე მცირე მოცულობით. როდესაც Mac-ის გამოყენების პრობლემა გაქვთ, დაუსვით შეკითხვა ServerFault. ჩვენ ყველანი მზად ვართ დაგეხმაროთ.

მეც შენნაირი სიტუაცია მაქვს. ვიყენებ Windows-ს განვითარებისთვის და ვიყიდე MBP სახლისთვის დაახლოებით ერთი წლის წინ (როდესაც გადავედი ოფისში). მე ნამდვილად მიჭირს რაიმე რეალური სამუშაოს შესრულება ჩემს MBP-ზე. რატომღაც შევეჩვიე Windows-ის გარემოს ორი ეკრანით. ოღონდ ამან არ შეგაჩეროთ. რამდენიმე პროგრამა, რომელიც მე გირჩევთ მიიღოთ არის შემდეგი:

  • ტრანსფერი - კარგი ftp კლიენტი
  • MAMP - აწარმოებს ვებ სერვერს თითქმის გარედან. კარგია ძირითადი განვითარებისთვის.
  • Quicksilver - გეხმარებათ სწრაფად იპოვოთ აპლიკაციები.
  • სივრცეები ჟესტებთან ერთად (მოარგეთ თქვენი ჟესტები ერთი ეკრანიდან მეორეზე გადასასვლელად, მე ვიყენებ სამ თითს, მოლიპულ).
  • ანტურაჟი - ელექტრონული ფოსტისთვის
  • ტერმინალი - ssh-სთვის (პუტის ალტერნატივა) (შედის)
  • Dreamweaver/BBedit/Textmate (ყველაფერი საკმაოდ წესიერია, მაგრამ მე ვარ editplus-ის მოყვარული Windows-ზე და არა IDE ფანი).

ვფიქრობ, თქვენი შეკითხვა არ არის კაკაოს სწავლა, არამედ MAC-ის უფრო ეფექტური გამოყენება. კარგად, ზემოთ ჩამოთვლილი ინსტრუმენტები დაგეხმარებათ.

სამწუხაროდ, თქვენი შეკითხვა არ არის ძალიან ნათელი, თუ რა გსურთ სინამდვილეში.

თუ გსურთ დაწეროთ რაიმე კროს პლატფორმაზე, შეიძლება ძალიან სასარგებლო იყოს ტესტირებისთვის ვირტუალური მანქანა. სანამ Linux-ზე ვიყავი ყოველთვის ვიყენებდი VirtualBox-ს, ის მუშაობს OS X-ზეც.

სიტყვა

გახსოვდეთ: „თავიდან იყო სიტყვა..." ეს არის ზუსტად ის. ამ სტატიების სერიაში ჩვენ შევეცდებით გავიგოთ და აღვწეროთ, თუ როგორ შეგიძლიათ დაპროგრამება ქვეშ Mac OS Xრისი გაკეთება ღირს, რისი გაკეთებაც არ ღირს. აბა, რატომ არის ეს აუცილებელი? ყოველივე ამის შემდეგ, არსებობს უამრავი სხვა სისტემა.

არგუმენტები...

თითოეულ ოპერაციულ სისტემას აქვს საკუთარი არგუმენტები. და ხშირად ერთ-ერთი სისტემის პროგრამირება არ არის არჩევანის ან უპირატესობის საკითხი, არამედ ტექნიკური სპეციფიკაციის ნაწილი. ამ შემთხვევაში კამათი საკმაოდ რთულია (გონივრული). და ალბათ მხოლოდ Mac OS X(და ზოგადად კომპიუტერები ვაშლი)თქვენ შეგიძლიათ როგორმე დაიცვათ თქვენი სამუშაო ადგილი ამ დავაში.

მოდით დავპროგრამოთ ნებისმიერზე. მაგალითად, ვებსაიტისთვის. ამ შემთხვევაში, ყველაზე ხშირად ჩვენ ვმუშაობთ Apache/MySQL/P(HP/Perl/Python). აქ არავის პრობლემა არ აქვს OS. მაგრამ შემდეგ თქვენ უნდა შეამოწმოთ, თუ როგორ გამოიყურება ყველაფერი ვიზუალურად ბრაუზერებში. და ყველა სისტემა დაბნეულია (ლეგალური) გაშვების შეუძლებლობის გამო Mac OS Xშეამოწმეთ როგორ იმუშავებს საიტი Safari. მაგრამ პირიქით - გთხოვ, რამდენიც გინდა. სამ ვერსიაში.

კარგი, მაშინაც კი, თუ ჩვენ გვჭირდება რაღაცის შემუშავება სპეციალურად Linux/Windows. როგორც ჩანს, ამ შემთხვევაში აუცილებლად უნდა აირჩიოთ შესაბამისი პლატფორმა, შესაბამისი OS. მაგრამ დაელოდე, რატომ? ვირტუალურ მანქანებში ეს სისტემები ბრწყინვალედ მუშაობს. ამავდროულად, შესაძლებელია ქსელის ლოკალური ემულაცია (სერვერის გაშვება ერთში ვ.მ., კლიენტი სხვაზე), გადაიღეთ სნეპშოტები (შენახვა მდგომარეობა ვ.მ.დროის გარკვეულ მომენტში შემდგომი დაბრუნებისთვის) და ა.შ.

და ბოლოს, არავინ გიკრძალავს საკუთარის დადებას Linuxან ფანჯრები(ან ორივე ერთდროულად) ჩართულია მაკ. საპირისპირო არ შეიძლება გაკეთდეს. და ზუსტად ასე - მარტივად, საჭიროების შემთხვევაში.

აქვს რაიმე დასაბუთებული მინუსი Mac-ებს? დიახ, მაქვს. პათოლოგიური მტრობა. ზოგს რაღაც კონკრეტული სჭირდება. მაგალითად, კონფიგურირებადი . ან გაზარდეთ ფანჯარა სათაურის ზოლზე ორჯერ დაწკაპუნებით. სულ ეს გჭირდება და სულ ესაა. იმ შემთხვევაში MacOS Xმკაცრად უკუნაჩვენებია ამ შემთხვევაში, უარყოფითი ემოციების გარდა არაფერი გამოდის.

და ფაქტები...

და ფაქტები მარტივია. უფრო და უფრო ხშირია დეველოპერის კონფერენციებზე MacBooksდა MacBook Pro.იქ იმართება პრეზენტაციები, დემონსტრირებულია განვითარების პროტოტიპები და საბოლოო რელიზები.

Mac-ები საკმაოდ მჭიდროდ შევიდნენ დეველოპერების ცხოვრებაში. და ზოგიერთ ადგილას მათ უბრალოდ დაიპყრეს ისინი. მაგალითად, ჯავაგანვითარება. კონფერენციაზე JavaOneყველა კომპიუტერის 60 პროცენტი კომპანიის ლეპტოპებია Apple.

კარგი, საკმარისია ლექსები. ვნახოთ, რას იძლევა ის რეალურად Appleპროგრამირებისთვის და რამდენად მოსახერხებელია ყველაფრის დაყენება მის გამოსაყენებლად.

მომეცი ორი!

არსებობს ორი მარტივი რამ, რომელიც ყოველთვის არ არის აშკარა და ყოველთვის არ არის ადვილად გასაგები სხვადასხვა დეველოპერებისთვის. განსაკუთრებით ისინი, ვინც ქმნიან არაფინალურ პროდუქტს (Notepad)და პლატფორმა სხვებისთვის (1C).

პირველ რიგში, პლატფორმის შესაქმნელად თქვენ უნდა გქონდეთ მასზე გაშვებული რაღაც. ანუ ისე, რომ მესამე მხარის პროგრამისტებმა შეძლონ მისთვის პროგრამების შექმნა. გავიხსენოთ რა აურზაური იყო iPhone SDK...რა თქმა უნდა, აქამდე თითქმის არასდროს SDKასე არ გასცეს. და თითქმის არასდროს ყოფილა ასეთი ხარისხის. ან, მაგალითად, როდესაც ის შეიქმნა Sony Playstation 3, DevKit(დეველოპერული ინსტრუმენტები, დეველოპერის ხელსაწყოების ნაკრები)მზად იყო ამისთვის ბევრად უფრო ადრე, ვიდრე თავად კონსოლი. ისე, რომ კონსოლის გამოშვების დროისთვის, სულ მცირე, რამდენიმე თამაში უკვე შეიძლება გამოჩნდეს. ამიტომ ინსტრუმენტები მნიშვნელოვანია. ეს უაღრესად მნიშვნელოვანია. და შიგნით Appleეს კარგად არის გასაგები. ისინი ჩუქნიან მას უფასოდ (ყველა Mac-ს მოყვება OS დისკი და SDK), ძალიან აქტიურად ავითარებენ მას.

მეორეც, დიდი პლატფორმის შექმნა ბევრი ადამიანისთვის დიდი სამუშაოა (იგივე Mac-ების გამოყენებით). ხალხი განსხვავებულია და ინსტრუმენტები მრავალფეროვანი უნდა იყოს. ამ მიზნით, თან Mac OS Xტრადიციულად, რამდენიმე სკრიპტირების ენაა მოწოდებული, რომლებიც უკვე კონფიგურირებულია სამუშაოსთვის. რეალურად, Mac OS X -ერთადერთი OS (ახლა ისინი იწყებენ გამოჩენას ლინუქსი),რომელშიც იგი თავდაპირველად დგას ჯავა.ამიტომ, პროგრამირების დასაწყებად ქვეშ Mac OS X,არ არის საჭირო ჩამოტვირთვა და ინსტალაცია, მაგალითად, პითონითუ გსურთ მასზე სკრიპტის დაწერა. უბრალოდ დაჯექი და დაწერე - ის უკვე არის, უკვე კონფიგურირებულია.

გაგრძელება…