PChome季暢銷第一名。 彼得潘要繼續更多的創作,努力維持!
2012年8月4日 星期六
2012年8月3日 星期五
2012年7月29日 星期日
實現彼得潘偷懶欲望的新一代Objective-C
隨著Xcode 4.4的推出, Objective-C也有了大幅的進步。其實偷懶是人類的天性,科技的進步正是朝著偷懶的目標前進。接下來彼得潘將介紹的Objective-C三大新功能,完全實現了彼得潘不為人知的偷懶欲望,我們可以打愈少的字,犯更少的錯,開發更多的App,賺更多的錢,環遊世界玩更多的國家!
1. 自動補上@synthesize
只要打@property,@synthesize會自動幫我們補上。
例子:
TestViewController.h
@interface TestViewController : UIViewController
@property (strong, nonatomic) NSString *name;
@end
2. 神奇的@
(3) NSDictionary
3. 更方便的存取集合裡的元素 (Object Subscripting)
NSMutableArray *batmanMovies = [@[@"開戰時刻", @"黑暗騎士", @"黎明升起"]
mutableCopy];
[batmanMovies addObject:@"當蝙蝠俠遇上彼得潘"];
沒有subscripting的蝙蝠俠第4集
movieLabel.text = [batmanMovies objectAtIndex:3];
支援subscripting的蝙蝠俠第4集
NSDictionary *joiNewAlbum = @{ @"song1" : @"Love You", @"song2": @"不透光" };
沒有subscripting的蔡淳佳抒情主打歌
songLabel.text = [joiNewAlbum objectForKey:@"song2"];
支援subscripting的蔡淳佳抒情主打歌
songLabel.text = joiNewAlbum[@"song2"];
說明:
在[ ]內指定key
想要具有Object Subscripting的神奇魔力,其實很簡單,想要像NSArray一樣透過index存取,只要定義以下2兩個method:
- (id)objectAtIndexedSubscript:(NSUInteger);
- (void)setObject:(id)obj atIndexedSubscript:(NSUInteger)idx;
想要像NSDictionary一樣透過key存取,只要定義以下2兩個method:
- (id)objectForKeyedSubscript:(id)key;
- (void)setObject:(id)object forKeyedSubscript:(id)key;
執行結果:
1. 自動補上@synthesize
只要打@property,@synthesize會自動幫我們補上。
例子:
TestViewController.h
@interface TestViewController : UIViewController
@property (strong, nonatomic) NSString *name;
@end
TestViewController.m
@implementation TestViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
_name = @"彼得潘";
self.name = @"彼得潘";
}
@end
說明:
自動補上的@synthesize,其實長得像這樣
@synthesize name = _name;
因此若要直接存取物件的member,於前面加 _ 即為member名稱。
自動補上的@synthesize,其實長得像這樣
@synthesize name = _name;
因此若要直接存取物件的member,於前面加 _ 即為member名稱。
2. 神奇的@
Objective-C的物件讓人又愛又恨。因為物件,讓我們可以輕易設計許多天馬行空的App。但也因為物件,讓我們在使用某些常用型別,比方int, Array, Dictionary時,需要寫許多令人心煩的程式碼。現在有了神奇的@,一切都簡單多了。
例子:
(1) NSNumber
a. 一拍即合型
沒有@的世界末日
NSNumber * endOfTheWorld = [NSNumber numberWithInt: 2012];
神奇@的世界末日
NSNumber *endOfTheWorld = @2012;
說明:
如果對象是數字,它和@完全是一拍即合,可以直接結合。
b. 月下老人 ( ) 牽線型
如果不是數字,還是可以結合,只不過需要 ( ) 的幫忙。
-(int)getEndOfTheWorld
{
return 2012;
}
沒有@的世界末日
NSNumber * endOfTheWorld = [NSNumber numberWithInt: [self getEndOfTheWorld]];
神奇@的世界末日
NSNumber *endOfTheWorld = @([self getEndOfTheWorld]);
(2) NSArray
結合@ 和 [ ] ,我們可以輕易創造NSArray。
結合@ 和 [ ] ,我們可以輕易創造NSArray。
沒有@的蝙蝠俠三部曲
NSArray *batmanMovies = [NSArray arrayWithObjects:@"開戰時刻", @"黑暗騎士", @"黎明升起", nil];
神奇@的蝙蝠俠三部曲
NSArray *batmanMovies = @[@"開戰時刻", @"黑暗騎士", @"黎明升起"];
不過如果蝙蝠俠想再拍第四集,要先變型為NSMutableArray才能加入第四集,例如以下例子:
NSMutableArray *batmanMovies = [@[@"開戰時刻", @"黑暗騎士", @"黎明升起"] mutableCopy];
[batmanMovies addObject:@"當蝙蝠俠遇上彼得潘"];
(3) NSDictionary
結合@ 和 { },我們可以輕易創造NSDictionary。
沒有@的蔡淳佳新專輯主打歌
NSDictionary *joiNewAlbum = [NSDictionary dictionaryWithObjectsAndKeys:@"Love You", @"song1", @"不透光", @"song2", nil];
神奇@的蔡淳佳新專輯主打歌
NSDictionary *joiNewAlbum = @{ @"song1" : @"Love You", @"song2": @"不透光" };沒有@的蔡淳佳新專輯主打歌
NSDictionary *joiNewAlbum = [NSDictionary dictionaryWithObjectsAndKeys:@"Love You", @"song1", @"不透光", @"song2", nil];
神奇@的蔡淳佳新專輯主打歌
3. 更方便的存取集合裡的元素 (Object Subscripting)
NSMutableArray *batmanMovies = [@[@"開戰時刻", @"黑暗騎士", @"黎明升起"]
mutableCopy];
[batmanMovies addObject:@"當蝙蝠俠遇上彼得潘"];
沒有subscripting的蝙蝠俠第4集
movieLabel.text = [batmanMovies objectAtIndex:3];
支援subscripting的蝙蝠俠第4集
movieLabel.text = batmanMovies[3];
說明:
在 [ ] 內指定index
說明:
在 [ ] 內指定index
NSDictionary *joiNewAlbum = @{ @"song1" : @"Love You", @"song2": @"不透光" };
沒有subscripting的蔡淳佳抒情主打歌
songLabel.text = [joiNewAlbum objectForKey:@"song2"];
支援subscripting的蔡淳佳抒情主打歌
songLabel.text = joiNewAlbum[@"song2"];
說明:
在[ ]內指定key
執行結果:
想要具有Object Subscripting的神奇魔力,其實很簡單,想要像NSArray一樣透過index存取,只要定義以下2兩個method:
- (id)objectAtIndexedSubscript:(NSUInteger);
- (void)setObject:(id)obj atIndexedSubscript:(NSUInteger)idx;
想要像NSDictionary一樣透過key存取,只要定義以下2兩個method:
- (id)objectForKeyedSubscript:(id)key;
- (void)setObject:(id)object forKeyedSubscript:(id)key;
有一點值得注意的,NSArray和NSDictionary要等到iOS 6 SDK才定義這2個method,因此目前尚未支援iOS 6的Xcode 4.4是無法以[ ] 存取NSArray和NSDictionary裡的元件,只有Xcode 4.5可以。
接下來彼得潘就以Peter Pan的自我介紹為例,說明如何讓自訂類別具有Object Subscripting的神奇魔力。
接下來彼得潘就以Peter Pan的自我介紹為例,說明如何讓自訂類別具有Object Subscripting的神奇魔力。
2012年7月25日 星期三
iOS App 入門開發實戰講座
http://registrano.com/events/6551b2
想要體驗自己的App成為大家日常生活中不可或缺的必需品嗎?想讓你的App在別人手機中佔有一席之地嗎?
Techmemo 過往舉辦過一連串 iOS 講座論壇,已經將 iOS 程式開發的概念與技巧由淺入深的分享給各位學員,頗受各界好評。也吸引了四方的目光。
這次更進一步請到國內知名App的開發者-彼得潘 現身講座,為各位分享/解說App的入門開發流程與不為人知的苦與樂。這位開發者所不但曾幫知名歌手開發專屬 App之外,也曾接過跨國開發案例,更是天瓏出版社 iOS 開發暢銷書作者。
彼得潘這次將為各位詳細解說iOS App的入門開發流程,帶領大家快速入門,從開發環境淺談到實機測試、App如何上架,同時也會帶來與知名歌手合作、跨國開發案例的經驗分享,此次上課內容更是取自於彼得潘所著作iOS 開發暢銷書( 博客來電腦類Top 1, PC Home 電腦/攝影 Top 1, 天瓏Top 1 ),精彩內容絕對不容錯過!
機會難得,名額有限,歡迎正有志於 iOS App 撰寫的開發者一同前來參加此次論壇。
活動日期:
2012/8/25 (六) 13:00 – 19:00
2012/8/26 (日) 13:00 – 19:00
想要體驗自己的App成為大家日常生活中不可或缺的必需品嗎?想讓你的App在別人手機中佔有一席之地嗎?
Techmemo 過往舉辦過一連串 iOS 講座論壇,已經將 iOS 程式開發的概念與技巧由淺入深的分享給各位學員,頗受各界好評。也吸引了四方的目光。
這次更進一步請到國內知名App的開發者-彼得潘 現身講座,為各位分享/解說App的入門開發流程與不為人知的苦與樂。這位開發者所不但曾幫知名歌手開發專屬 App之外,也曾接過跨國開發案例,更是天瓏出版社 iOS 開發暢銷書作者。
彼得潘這次將為各位詳細解說iOS App的入門開發流程,帶領大家快速入門,從開發環境淺談到實機測試、App如何上架,同時也會帶來與知名歌手合作、跨國開發案例的經驗分享,此次上課內容更是取自於彼得潘所著作iOS 開發暢銷書( 博客來電腦類Top 1, PC Home 電腦/攝影 Top 1, 天瓏Top 1 ),精彩內容絕對不容錯過!
機會難得,名額有限,歡迎正有志於 iOS App 撰寫的開發者一同前來參加此次論壇。
活動日期:
2012/8/25 (六) 13:00 – 19:00
2012/8/26 (日) 13:00 – 19:00
2012年7月23日 星期一
走在時代尖端,搶先安裝iOS 6
雖然彼得潘只是個小小的App開發者,但是新時代的工程師已經不流行做宅男了。彼得潘決定朝著走在時代尖端的方向努力,在2012秋天Apple正式公佈iOS 6前,搶先使用iOS 6,探究最新的iOS 6 SDK開發技術。
1. 下載iOS 6 beta檔案。(.lpsw檔)
如果是付費的iOS開發者,從官方的開發網站即可免費取得最新的iOS 6 beta。如果不是,借助敵人google大神的幫忙,也是沒有辦法中的唯一辦法。記住iOS 6檔案十分挑食,它有著綁定機型的特性,請勿將for iPhone 4s的檔案裝到iPad上。
2. iTunes至少10.6.3以上
3. 連接iPhone和Mac
4. 在iTunes的iPhone頁面,按住option鍵,然後再點選Check for Update,啟動選擇安裝檔案的視窗。
選擇lpsw檔安裝。
彼得潘的iPhone終於升級為iOS 6了。
2012年7月22日 星期日
從App裡寄信的代理人設定
第十七章從App裡寄信的範例,
在設定MFMailComposeViewController的代理人時,
請設定mailComposeDelegate,而非delegate。
原先的錯誤程式碼
mailController.delegate = self;
正確的程式碼
mailController.mailComposeDelegate = self;
在設定MFMailComposeViewController的代理人時,
請設定mailComposeDelegate,而非delegate。
原先的錯誤程式碼
mailController.delegate = self;
正確的程式碼
mailController.mailComposeDelegate = self;
2012年7月19日 星期四
預覽程式的剪貼生檔大法
平常彼得潘上網看到喜愛的圖片總是喜歡按個右鍵copy,希望書寫完後有空再來好好賞析。然而從前彼得潘只懂copy paste,許多隨意paste的圖片如今已煙消雲散,只殘存於想不起的回憶裡。
但是就在今天,彼得潘終於找到美圖永久保存的方法了。不讓畫皮的轉生術專美於前,透過Mac內建的預覽程式,只要三秒鐘,即可將copy的圖片生成檔案,和硬碟共存亡。接下來彼得潘將示範如何儲存偶像蔡淳佳首張專輯的封面圖片。
1. 檔案 -> 使用剪貼板的內容新增檔案
2. 儲存圖檔
訂閱:
文章 (Atom)