Xcode的第一個mac程序


今天是第一次用Xcode,什么都不會,對於像我這種從windows c++轉mac c++/obj-c/python的人,對mac下的編程可以說是一點都不了解,這篇文章也從零開始寫起,記錄我的cocoa編程學習歷程。


1、mac下怎么編程

由於對Xcode極其陌生,大學時學java弄過eclipse,然后又了解到中文版的跨平台IDE Netbeans,所以就裝了這兩款IDE的mac版。剛裝上的時候無從下手,因為我知道編寫程序都是要include某些庫的,可是庫在哪兒呢?

上網查到eclipse和Netbeans要編寫python和C++都需要安裝插件,插件安裝選項都在Help菜單里,找到相應的c++和python工具,都裝上,就至少在新建項目時可以建立相應的工程了。不過python還好,C++可是怎么都運行不起來。查了老半天資料,發現這兩款IDE都沒有自帶C++的編譯器,於是安裝了Xcode,此時Netbeans已經可以運行C++了,eclipse卻仍然不行。

一番研究之后,發現eclipse新建C++工程得選Mac OS gcc,工程設置里的C++ builder setting也得選GCC C++ compiler,binary選Mach-O 64 Parser,這樣應該就OK了(具體原理還不知道)。可見eclipse配置起來還是很麻煩的,不過我接觸過的程序員都說eclipse比netbeans好……

說了這么半天C++和python,還都是集中在控制台程序,我很久以前寫過VB和C#的GUI程序,但是C++、python的GUI我可從來沒寫過,何況在mac下,沒有VS,我根本不知道怎么做GUI呢!又上網查,跨平台GUI庫首推Qt和wxWidgets,好吧,不會用,而且這倆也都沒有自帶界面編輯器。正好在機緣巧合的機會下,我可能得需要開發mac原生程序,那么不如看看Xcode是怎么做mac程序的GUI的吧。

所以今天的目標是,做出一個mac下的GUI程序來。

至於Xcode,裝了之后不需要做什么設置就能用了,如果是編寫Objective-C應用,那么生成出來的就是app程序,可以直接在mac上面用了。這便是mac下如何編程的最簡潔的答案。


2、Xcode怎么做GUI

Xcode自帶了GUI編輯器IB,用起來還是挺方便的,不過跟VS最大的區別在於,VS是雙擊控件就進入到事件代碼編寫,而Xcode選擇了某種稱為“Action”和“Outlet”的鏈接機制,具體是怎么回事也還沒有深究,簡單來講,Action用於觸發事件,而Outlet是指針,指向某一控件,用於調用控件的功能,我知道的就這么多。

今天要寫的程序需要有一個窗體,其中有一個按鈕,按下按鈕可以在窗體中空白處顯示一行字。以下是流程:

(1)新建Objective-C Application工程,取名,選路徑

(2)菜單View-Assistant Editor打開輔助編輯器,其實就是分屏

(3)第一屏頂欄選擇MainMenu.xib打開界面編輯器,雙擊左側樹形圖中的Windows-View,新建窗體,從右側下部控件列表中把Button和Label拖入窗體

(4)第二屏選擇工程名文件夾下的.h文件,鼠標點選按鈕控件,按住CTRL鍵拖至.h文件中,建立IBAction。標簽空間拖入建立IBOutlet。

(5)第二屏選擇工程名文件夾下的.m文件,在文件頭添加@synthesize IBOutlet名,IBAction函數中寫上[IBOutlet名 setStringValue:@"要顯示的字符串"]; ,記住中括號、@和結尾的分號不能少。

(5)點擊運行應該就可以看到效果了。

完整代碼如下:

//
//  AppDelegate.h
//  helloworld
//
//  Created by me on 14-6-25.
//  Copyright (c) 2014年 me. All rights reserved.
//

#import <Cocoa/Cocoa.h>

@interface AppDelegate : NSObject <NSApplicationDelegate>
@property (weak) IBOutlet NSTextField *text;


@property (assign) IBOutlet NSWindow *window;
- (IBAction)click:(id)sender;

@end

//
//  AppDelegate.m
//  helloworld
//
//  Created by me on 14-6-25.
//  Copyright (c) 2014年 me. All rights reserved.
//

#import "AppDelegate.h"

@implementation AppDelegate
@synthesize text;

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    // Insert code here to initialize your application
}

- (IBAction)click:(id)sender {
    [text setStringValue:@"Hello World!"];
}
@end


3、總結

Objective-C中的.m文件就相當於C++中的.cpp文件,是用於實現函數功能的。

Xcode的代碼自動提示功能很好用,可以迅速熟悉OC的類庫。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM