要學Objective-C還是Swift?
Apple發表Swift已超過半年,學習新程式語言已勢在必行,使用熟悉的Objetive-C來開發當然速度很快,不過未來肯定會往Swift發展,從現在開始來備戰吧!就我目前的狀況,會以Objetive-C為主而Swift為副,直到死亡交叉那一天到來~
Apple發表Swift已超過半年,學習新程式語言已勢在必行,使用熟悉的Objetive-C來開發當然速度很快,不過未來肯定會往Swift發展,從現在開始來備戰吧!就我目前的狀況,會以Objetive-C為主而Swift為副,直到死亡交叉那一天到來~
大學時期的我熱愛學習,只要有開新的程式語言課程,我都會興致勃勃地選修!畢業後進入應用層面,發覺這些技術花費一輩子也不可能學得完,更何況這些程式語言持續在進化。以為就快對iOS爐火純青,然而很幸運地,每年總是有重大的更新等著我去了解和學習:P~
於是乎,就以我未來想要達到的目標來選擇想精通的第一語言,看了這張圖解Which Programming Language Should I Learn First,作者真是厲害,提供想要學習寫程式的初學者一個參考,從目的反推回適合的程式語言,當然我的結果就是Objective-C。
如果你想要學習的程式語言有在這張圖裡面,不妨可以參考這張流程圖,包含的語言有:
實在是因為時間有限,不然我也想學習所有程式語言。現在我會先想,我的目標是什麼,工作是否能連結我的生活(連結生活才有趣啊XD~),於是照著這張圖走:
我想要在Mobile平台實現點子,因為想讓生活更有品味,於是選擇能在iPhone上跑的iOS,最後就得出Objective-C這個程式語言囉~只是呢⋯⋯總是會給人驚喜的Apple,半年前(2014/06)推出全新的程式語言Swift,同樣可以在iOS上運作,似乎有意逐漸取代Objective-C,於是我自然要往Swift發展囉~
這個電腦資訊發達的年代,能主動且喜歡學習的人格外有優勢!
感謝有人幫忙中文化,如此會有更多人看得懂啦~
小橋流水突然傳給我這張圖,我以為她要開始學寫程式XD~
之後遇到想學寫程式的初學者,可以分享這張圖給他/她,先清楚知道目標,後了解如何學習該語言:)~
一張好的快速參考表 (Quick Reference),勝過讀一本3公斤的工具書!當然這是要在有基礎的情況之下,而你突然失憶的時候,這張表才能發揮其價值!
雖然現在大家開始去學Apple公開的新語言Swift,但發展超過20年的Objective-C,在未來十年內我個人認為還不會被取代,所以想寫iOS APP的新朋友還是可以放心學習啦~
點開可以看放大的原始圖喔!該作者在其網站上也有非常豐富的教學文章,無論是新手還是老手,都可以盡情去挖寶喲:P~
自己是在iOS已經出現ARC機制的時候學習iOS程式設計,以為可以再也不用在乎記憶體管理,只要專注在應用程式功能上的開發即可,然而這一路以來的開發過程告訴我,記憶體管理依然非常重要,縱使我有無限制的記憶體,但在程式邏輯上會牽扯到記憶體運作,儘管我能順暢地寫完功能,執行後可能不是我想要的結果!
剛好用到多重排序 (Multiple Sort),於是就來練習一下,沒想到Objective C都幫我寫好了!我只要會用就好⋯⋯還記得當時寫C/C++的ACM題目,bug殺好久~知道怎麼實作之後,拿來用更有感覺:)~
原本以為獲取日期和時間的方法很簡單,沒想到它是如此深奧,我查詢一些跟NSDate相關的API用法,只要掌握幾個簡單的原則,就可運用自如。像是由 NSDate 轉換為 NSString,和由 NSString 轉換為 NSDate。
一直想知道如何在Objective C將資料寫入檔案,沒想到只是一個方法writeToFile就可以完成!比較讓我訝異的是,Objective C不像C語言,是寫到txt檔,反而是寫成xml檔!
哈~突然讓我想到我們系上那個教xml的教授,我一直不敢去上他的課,害怕浪費時間和金錢,只是為了那三個學分~為什麼?我想要學到東西!
看了WWDC教學影片與文件,發現Objective C在近幾年內有大幅度的成長!
以上是根據Tiobe的指標來決定排行,到了2012年9月,很高興Objective C又上升了一名!
TIOBE 程式設計語言社區排行榜是程式設計語言流行趨勢的一個指標。每月更新。這份排行榜排名基於互聯網上有經驗的程式師、課程和協力廠商的數量。排名使用著名的搜尋引擎(諸如:Google、 MSN 、雅虎)以及 Wikipedia 和 YouTube 進行計算。
對應NSArray,接著來練習NSMutableArray!屬於可變 (mutable) 的物件種類,裡頭可以放任何的型態的物件。
常用方法如下:
範例程式碼:
//
// main.m
// HappyMan's Program - NSMutableArray
// Xcode 4.5
// Created by ShengWen on 12/9/26.
// Copyright (c) 2012年 ShengWen. All rights reserved.
// https://cg2010studio.wordpress.com/
#import <Foundation/Foundation.h>
@interface monster : NSObject
{
int life;
}
@property int life;
-(void) show;
@end
@interface posion : NSObject
{
int cure;
}
@property int cure;
-(void) show;
@end
@implementation monster
@synthesize life;
-(void) show{
NSLog(@"life = %i",life);
}
@end
@implementation posion
@synthesize cure;
-(void) show{
NSLog(@"cure = %i",cure);
}
@end
int main (int argc, const char * argv[]) {
monster* lion1 = [[monster alloc] init];
monster* lion2 = [[monster alloc] init];
monster* lion3 = [[monster alloc] init];
posion* red1 = [[posion alloc] init];
posion* red2 = [[posion alloc] init];
posion* red3 = [[posion alloc] init];
NSMutableArray* mArray = [[NSMutableArray alloc] init];
lion1.life = 99;
lion2.life = 199;
lion3.life = 299;
red1.cure = 49;
red2.cure = 149;
red3.cure = 249;
// 將物件加入陣列中
[mArray addObject:lion1];
[mArray addObject:lion2];
[mArray addObject:lion3];
[mArray addObject:red1];
[mArray addObject:red2];
[mArray addObject:red3];
// 使用陣列內物件的方法
NSLog(@"使用物件方法:");
[mArray makeObjectsPerformSelector:@selector(show)];
// 刪除物件
NSLog(@"刪除物件:");
[mArray removeObject:red2];
[mArray makeObjectsPerformSelector:@selector(show)];
// 取代物件
NSLog(@"取代物件:");
[mArray replaceObjectAtIndex:2 withObject:red3];
[mArray makeObjectsPerformSelector:@selector(show)];
// 對調物件
NSLog(@"對調物件:");
[mArray exchangeObjectAtIndex:0 withObjectAtIndex:2];
[mArray makeObjectsPerformSelector:@selector(show)];
return 0;
}
執行結果:
2012-10-04 23:51:42.926 HappyMan’s First Program[8898:403] 使用物件方法:
2012-10-04 23:51:42.928 HappyMan’s First Program[8898:403] life = 99
2012-10-04 23:51:42.929 HappyMan’s First Program[8898:403] life = 199
2012-10-04 23:51:42.929 HappyMan’s First Program[8898:403] life = 299
2012-10-04 23:51:42.930 HappyMan’s First Program[8898:403] cure = 49
2012-10-04 23:51:42.930 HappyMan’s First Program[8898:403] cure = 149
2012-10-04 23:51:42.931 HappyMan’s First Program[8898:403] cure = 249
2012-10-04 23:51:42.931 HappyMan’s First Program[8898:403] 刪除物件:
2012-10-04 23:51:42.932 HappyMan’s First Program[8898:403] life = 99
2012-10-04 23:51:42.932 HappyMan’s First Program[8898:403] life = 199
2012-10-04 23:51:42.933 HappyMan’s First Program[8898:403] life = 299
2012-10-04 23:51:42.933 HappyMan’s First Program[8898:403] cure = 49
2012-10-04 23:51:42.934 HappyMan’s First Program[8898:403] cure = 249
2012-10-04 23:51:42.934 HappyMan’s First Program[8898:403] 取代物件:
2012-10-04 23:51:42.935 HappyMan’s First Program[8898:403] life = 99
2012-10-04 23:51:42.935 HappyMan’s First Program[8898:403] life = 199
2012-10-04 23:51:42.936 HappyMan’s First Program[8898:403] cure = 249
2012-10-04 23:51:42.936 HappyMan’s First Program[8898:403] cure = 49
2012-10-04 23:51:42.937 HappyMan’s First Program[8898:403] cure = 249
2012-10-04 23:51:42.937 HappyMan’s First Program[8898:403] 對調物件:
2012-10-04 23:51:42.938 HappyMan’s First Program[8898:403] cure = 249
2012-10-04 23:51:42.940 HappyMan’s First Program[8898:403] life = 199
2012-10-04 23:51:42.940 HappyMan’s First Program[8898:403] life = 99
2012-10-04 23:51:42.941 HappyMan’s First Program[8898:403] cure = 49
2012-10-04 23:51:42.942 HappyMan’s First Program[8898:403] cure = 249
話說,輸出明明就很少,結果大部分的內容都是時間加上專案名稱,下次該把這部分給刪除掉~
參考:Objective-C 陣列物件、NSMutableArray Class Reference、Objective-C 入門指南 – NSMutableArray。
Written
on 2015 年 02 月 07 日