各位大大好,
之前小弟也是Mobile01的忠實愛用者,尤於喜愛寫程式但苦於找不到一起討論的地方
mobile01也是消費性使用者比較多
不久之前小弟看到朋友有加入一個facebook page,看到了許多iPhone開發的文章
感覺還不錯,特此和大家分享
轉貼幾篇文章
原文請見
http://www.facebook.com/pages/Taipei-Taiwan/Developers-note/226724001803

Objective-C - Informal Protocol
相信大家多少都有用過protocol這個在objective-c中就好比是c++的pure virtual 或是java裡的interface。另一個常看但沒有不常寫的Category也可以辦到procotocol的效果,如圖所示, 我們在NSObject加了一個叫NSNetServiceBrowserDelegateMethods這個protocol,NSObject的子類別都可以定義自己的實作,這樣是不是很像protocol啊,所以書上叫他informal的protocol.

iPhone - MapKit
在iPhone的map軟體找7-11就會產生如圖所示。我們來看看幾個重要的元件, 可以接下去會有東西跳出來的大頭針叫MKPinAnnotationView, 地上的圖就是MKAnnotationView。差別很簡單就是接下去會不會跳出來東西,當然也可以更改大頭針用自己的圖。再就來就是follow兩個Protocol <MKAnnotation> 和<MKMapViewDelegate>。<MKAnnotation>就是用在每個一要放在地圖上的元件,產生一個MKAnnotationView把有follow<MKAnnotation>的物件包進去,當做是-(MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation; 的回傳值而mapView:viewForAnnotation:就是follow <MKMapViewDelegate>物件要覆寫的。最後把一個MKMapView的delegate指定成剛剛有follow <MKMapViewDelegate> 的物件就可以了。


Objective-C - 善用NSAutoreleasePool
如果非要跑一個很久的loop,即使loop裡面的instance都是之後會被pool在適當的時機清掉的,但是,系統不會在loop還在執行的時候中斷去把instance清掉。比如說圖中上方的desc這個變數,雖然他是會被丟掉autoreleasepool裡,但是,如果不做下面框框這個動作的話,有百萬個desc會瞬間占滿記憶體,而又要等loop結束才會一起清掉,是不是很不理想呢?那就可以採用下面框框的做法,雖然會有點慢但記憶體不會爆掉,這也就是時間和空間要取捨的一個例子…
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!