Chevrolet Questionnaire
posted on 09 Oct 2011 16:01 by totiz



อ้างอิง: Osxdaily.com
เปลี่ยนมาใช้ Automatic Reference Counting (ARC)
ด้วยข้อดีหลายประการของ ARC ทั้งการควบคุมหน่วยความจำที่ทำโดยอัตโนมัติ โค้ดดูสะอาดตาขึ้น เพราะไม่ต้องมีส่วน retain, releaes, autorelease, autorelease pool, dealloc อยู่ในโค้ดเลย ทำให้ดูคุ้มค่าที่เราจะเสียเวลามาปรับโค้ดเพื่อให้รองรับฟีเจอร์นี้ โดยทำตามนี้








Input
NSLog(@"\n\n====== NSString : white space ======="); NSString* ws = @" \t\n"; NSString* empty = @" "; NSString* nws = @"hello"; NSLog(@"'%@' contains only whitespace ? : %d", ws, [ws isWhitespaceAndNewlines]); NSLog(@"'%@' contains only whitespace ? : %d", nws, [nws isWhitespaceAndNewlines]); NSLog(@"'%@' is empty? : %d", empty, [empty isEmptyOrWhitespace]);
' ' contains only whitespace ? : 1 'hello' contains only whitespace ? : 0 ' ' is empty? : 1
NSLog(@"\n\n====== NSString : stripHTML ======="); NSString* html = @"I am an HTML script."; NSString* stipped = [html stringByRemovingHTMLTags]; NSLog(@"html : %@", html); NSLog(@"stripped : %@", stipped);
====== NSString : stripHTML ======= html : I <b>am</b> an HTML script. stripped : I am an HTML script.
NSLog(@"\n\n====== NSString : parse URL params ======="); NSURL* url = [NSURL URLWithString: @"http://www.google.com/search?sourceid=chrome&;ie=UTF-8&q=pizza"]; NSString* paramString = [url query]; NSDictionary* params = [paramString queryDictionaryUsingEncoding:NSASCIIStringEncoding]; NSLog(@"url : %@", url); NSLog(@"params:\n%@", params);
====== NSString : parse URL params ======= url : http://www.google.com/search?sourceid=chrome&;ie=UTF-8&q=pizza params: { ie = "UTF-8"; q = pizza; sourceid = chrome; }
NSLog(@"\n\n====== NSString : create URL query string ======="); NSString* baseUrl = @"http://www.yahoo.com/search"; NSMutableDictionary* params = [[NSMutableDictionary alloc] init]; [params setValue:@"pizza" forKey:@"q"]; [params setValue:@"json" forKey:@"format"]; NSString* fullURL = [baseUrl stringByAddingQueryDictionary:params]; NSLog(@"query parameters\n%@", params); NSLog(@"query string is : %@", fullURL);
====== NSString : create URL query string ======= query parameters { format = json; q = pizza; } query string is : http://www.yahoo.com/search?q=pizza&;format=json
NSLog(@"\n\n====== NSString : md5 ======="); NSString* s1 = @"hiya Three20 world"; NSString* md5 = [s1 md5Hash]; NSLog(@"md5('%@') => %@", s1, md5);
====== NSString : md5 ======= md5('hiya Three20 world') => 6fd98ef06e6041b87dbe8dc978b95c4c md5Hash is also available for NSData
Three20 เป็นไลบรารีโอเพนซอร์ซสำหรับ iOS พัฒนาโดยวิศวกร Facebook ถูกใช้กันอย่างแพร่หลาย ทั้งเป็น Core ในการพัฒนาแอพ Facebook เอง และแอพดังๆ หลายตัวทั้ง Posterous, Pulse, Meetup.com, และ SCVNGR ก็ได้นำไปใช้

จุดดึงดูของ Three20 อยู่ที่ความง่ายในการใช้งาน และการทำเรื่องยากๆ ซับซ้อน ให้เป็นเรื่องง่ายด้วยโค้ดที่กระชับ ผ่านการออกแบบที่เป็นเอกลักษณ์ของ Facebook เอง เช่น URL-based Navigation ที่มองทุก View เป็น Page และสามารถเข้าถึงได้ผ่าน URL ที่เชื่อมไว้
Highlight
Photo Viewer

เป็นอีกหนึ่งฟีเจอร์ที่น่าสนใจของ Three20 ถูกออกแบบให้ทำงานได้เหมือนแอพ Photo บน iPhone แต่เพิ่มความสามารถในการโหลดรูปผ่าน URL มาแสดงเป็นอัลบั้มได้อัตโนมัติ
TTTable View

หรือ Simple Table View ที่มอง Table เป็น Array และสามารถกำหนดให้แต่ละเซลล์มีลักษณะที่แต่งต่างกันได้เช่น เซลล์รูป เซลล์ข้อความผสมรูป เซลล์ LongText ที่มีขนาดขึ้นกับข้อความ
HTTP Disk Cache

เนื่องด้วย NSURLRequest สามารถเก็บแคชในเฉพาะบนแรมเท่านั้น ถือว่าเป็นข้อจำกัดสำหรับแอพประเภท Internet-aware ตัว TTURLRequest เกิดมาเพื่อแก้ปัญหานี้ รวมทั้งฟีเจอร์ที่น่าสนใจอย่าง pause/resume ก็ถูกเพิ่มเข้ามาด้วย
Launcher

คนเล่นแอพ Facebook จะคุ้นเคยกันดีกับ Launcher อยู่แล้ว ลักษณะจะเป็นเมนูทีถูกเรียงกันเป็นตาราง และสามารถทำ Paging หลายหน้าได้
URL-based Navigation
จากที่ได้พูดถึงข้างต้น ตัว Three20 อณุญาติให้เราผูก View เข้ากับ URL และเรียกใช้ได้ในทุกๆ ที่ เช่น tt://myContract/getDetail ผูกเข้ากับหน้าแสดงรายละเอียดเพื่อนในสมุดโทรศัพท์
TTLog
เพิ่มขีดความสามารถให้กับ NSLog โดยการแยก Log เป็น Info,Debug,Error และ TTDASSERT ที่ช่วยในงานตรวจสอบหรือ Validation ข้อมูลก่อนนำไปใช้ หากมีข้อผิดพลาดจะแจ้ง Error ออกมา
TTWeb Browser

ถูกใช้เป็น Web Browser ให้กับแอพหลายตัวที่อยู่ใน App Store ตอนนี้ เทียบได้ว่าเกือบทุกแอพที่สามารถเปิดเวปได้ในตัว จะใช้ TTWeb กันหมด
ที่กล่าวมาข้างต้นเป็นเพียงแค่ส่วนหนึ่งใน Three20 ยังมีอีกหลายตัวที่น่าสนใจ สามารถศึกษาเพิ่มเติมได้ที่ http://three20.info
ดาวน์โหลดโค้ดตัวอย่างได้จาก Github https://github.com/facebook/three20 (โหลดมาเปิด Example/TTCatalog แล้วเลือก TTCatalog ก่อนรัน)
อ้างอิง: http://www.raywenderlich.com/656/introduction-to-three20
edit @ 22 Sep 2011 01:29:35 by totiz