網頁

2011年11月9日 星期三

iOS學習_Objective-C超基本亂記

經過這些日子一陣混亂以後,已經註定要接觸apple系列,就在沒有不喜歡但也沒有像當初Android一樣超熱血的情況下,開始了第一堂課程,結束後有幾個感想:
1. 應該趕快買一台MacBook Pro。
2. 讓很多人來學Objective-C的apple真的很厲害。
3. 要比Android花更多更多的時間,才能到'自以為會一點'的心情。
4. 如果跟之前一樣,一直在各種語言(專案)轉換,痛苦程度倍增。

筆記:
1. 變數宣告
int age = 18;
(C裡面的int宣告,Objective-C撰寫常會與c語言混合撰寫)

NSString *name = @"ola";
(NSString為Objective-C的型態,前有NS前置詞皆為Objective-C內容,*號為c語言指標概念。因NSString為物件,物件前必須加@符號)

CGFloat size = 18.5
(CGFloat為小數宣告)

NSDate *today = [NSDate date]
(NSDate為日期物件,取得今日日期的方法為[NSDate date]→執行NSDate內的date方法,取得今天日期)

2. log的用法
NSLog(NSString)
例:NSLog(@"今天%@,姓名:%@,年紀:%d",today,name,age);
NSString要顯示時,可先用格式符號代替,再於後面對應相關變數。
%@:物件
%d:整數
%f:浮點

3. 類別相關事項
一個分為兩種檔案:.h及.m
.h:標頭檔,用以定義屬性、方法與繼承何者
.m:實作的內容

.h檔

#interface

@interface OlaClass:NSObject{
NSString *name;
CGFloat age;
}

- (NSString *)PrintName;
- (void)setName:(NSString *)vname;
- (NSString *)name;
- (void)setAge:(CGFloat)vage;
- (CGFloat)age;
@end

說明:
1. 宣告name與age兩個屬性(不需要宣告public等內容,因為所有的屬性都不能直接讀取,要存取屬性都必須藉由getter與setter)
2. {}中間為宣告屬性的地方,}與@end中間為宣告方法的地方。
3. - (NSString *)PrintName; →宣告PrintName實體方法,回傳NSString,'-'為實體方法。+為靜態方法。
4. - (void)setName:(NSString *)vname; →宣告vname實體方法,沒有傳回值,但傳入一個NSString。


.m檔

#import "OlaClass.h"

@implementation OlaClass

- (NSString *)PrintName
{
return [NSString stringwithFormat:@"name: %@,age:%d",name,age];
}

- (void)setName:(NSString *)vname;
{
name = vanem;
}

- (NSString *)name;
{
return name;
}

- (void)setAge:(CGFloat)vage;
{
age = vage;
}

- (CGFloat)age;
{
return age;
}

@end

說明:
1. @implementation與@end中間為實做方法的地方。
2. 在寫Set時,必須避開原本的屬性名稱,無法直接命名相同,而用類似this.name的方式表示指定不同的變數。

4. 方法使用
[name length]:使用name的length方法。
[ola setname:@"ola"]:使用ola的setname方法,並傳入NSString。

5. 其他
*每一版的Xcode都會有蠻大幅度的改變,升級時要注意。
*模擬器模擬兩指操作:option+滑鼠
*模擬器模擬螢幕旋轉:command+方向鍵
*寫程式的提示鍵與取消提示都是esc鍵
*didFinishLaunchingWithOptions為啟動時執行的方法

加油加油~~~~凹嗚~~~~~

沒有留言:

張貼留言