<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DkIBQ3g_cSp7ImA9WhRVF08.&quot;"><id>tag:blogger.com,1999:blog-9484269</id><updated>2012-01-16T22:35:52.649+08:00</updated><category term="LLVM" /><category term="Lion" /><category term="TimeMachine" /><category term="Git" /><category term="General" /><category term="GrandCentralDispatch" /><category term="Game" /><category term="LearningNotes" /><category term="Mac" /><category term="WWDC2011" /><category term="SocialNetwork" /><category term="Cocos2D" /><category term="iOS" /><category term="testing" /><category term="WWDC2010" /><category term="Xcode4" /><category term="Animation" /><category term="Block" /><category term="AppKit" /><title>Vince Yuan's blog</title><subtitle type="html">iPhone/iPad/Mac programming</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://vinceyuan.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://vinceyuan.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Vince Yuan</name><uri>http://www.blogger.com/profile/07268121275972731120</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://4.bp.blogspot.com/-6Wwm1UuOq44/Tlw888oGwJI/AAAAAAAAACM/5ZxWO4wtkp0/s220/VinceHead2.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>35</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/VinceYuansBlog" /><feedburner:info uri="vinceyuansblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;A0AASHY6eyp7ImA9WhRXGUQ.&quot;"><id>tag:blogger.com,1999:blog-9484269.post-1059982260520946715</id><published>2011-12-27T23:29:00.001+08:00</published><updated>2011-12-27T23:29:09.813+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-27T23:29:09.813+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Mac" /><category scheme="http://www.blogger.com/atom/ns#" term="AppKit" /><title>Scroll NSScrollView to Top</title><link rel="replies" type="application/atom+xml" href="http://vinceyuan.blogspot.com/feeds/1059982260520946715/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9484269&amp;postID=1059982260520946715" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/1059982260520946715?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/1059982260520946715?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VinceYuansBlog/~3/TFXLPhKjyR4/scroll-nsscrollview-to-top.html" title="Scroll NSScrollView to Top" /><author><name>Vince Yuan</name><uri>http://www.blogger.com/profile/07268121275972731120</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://4.bp.blogspot.com/-6Wwm1UuOq44/Tlw888oGwJI/AAAAAAAAACM/5ZxWO4wtkp0/s220/VinceHead2.jpg" /></author><thr:total>0</thr:total><content type="html">AppKit is old and is not as convenient as UIKit. But we have to use it on Mac app development.
"Scroll a scrollview to top" sounds easy, but actually it isn't. If you assign a documentView to a NSScrollView, you will see it scrolls to the bottom. (Very stupid!) The doc did not mention how to scroll to top. I found a way to control the vertical scroller. I can set the scroller to top, but the 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vPIhCtk6JuPqXQ2HGmR3aL96nDA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vPIhCtk6JuPqXQ2HGmR3aL96nDA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vPIhCtk6JuPqXQ2HGmR3aL96nDA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vPIhCtk6JuPqXQ2HGmR3aL96nDA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VinceYuansBlog/~4/TFXLPhKjyR4" height="1" width="1"/&gt;</content><feedburner:origLink>http://vinceyuan.blogspot.com/2011/12/scroll-nsscrollview-to-top.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEUEQHwyfSp7ImA9WhRQFE4.&quot;"><id>tag:blogger.com,1999:blog-9484269.post-8298429791139292557</id><published>2011-12-09T20:03:00.001+08:00</published><updated>2011-12-09T20:03:21.295+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-09T20:03:21.295+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Mac" /><title>Wrong info from proc_pidinfo</title><link rel="replies" type="application/atom+xml" href="http://vinceyuan.blogspot.com/feeds/8298429791139292557/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9484269&amp;postID=8298429791139292557" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/8298429791139292557?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/8298429791139292557?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VinceYuansBlog/~3/-XE2YQxnOw0/wrong-info-from-procpidinfo.html" title="Wrong info from proc_pidinfo" /><author><name>Vince Yuan</name><uri>http://www.blogger.com/profile/07268121275972731120</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://4.bp.blogspot.com/-6Wwm1UuOq44/Tlw888oGwJI/AAAAAAAAACM/5ZxWO4wtkp0/s220/VinceHead2.jpg" /></author><thr:total>0</thr:total><content type="html">proc_pidinfo is a very useful function to get a Mac OS X process's info such as the size of resident memory, consumed CPU time.
However, sometimes, the returned info is not correct. For example, a little process's resident memory becomes 4GB. Apple does not provide any document about this function, and I did not see useful comments in the header files.
I am lucky enough to see code snippet in the
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vrkgV4hVIKXaIWAMBupsjIMffao/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vrkgV4hVIKXaIWAMBupsjIMffao/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vrkgV4hVIKXaIWAMBupsjIMffao/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vrkgV4hVIKXaIWAMBupsjIMffao/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VinceYuansBlog/~4/-XE2YQxnOw0" height="1" width="1"/&gt;</content><feedburner:origLink>http://vinceyuan.blogspot.com/2011/12/wrong-info-from-procpidinfo.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4CRXgzeCp7ImA9WhdbGUk.&quot;"><id>tag:blogger.com,1999:blog-9484269.post-4214542769750622341</id><published>2011-10-18T22:25:00.000+08:00</published><updated>2011-10-18T22:26:04.680+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-18T22:26:04.680+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SocialNetwork" /><category scheme="http://www.blogger.com/atom/ns#" term="iOS" /><title>Let Several Apps Use the same Facebook App ID</title><link rel="replies" type="application/atom+xml" href="http://vinceyuan.blogspot.com/feeds/4214542769750622341/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9484269&amp;postID=4214542769750622341" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/4214542769750622341?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/4214542769750622341?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VinceYuansBlog/~3/Z2Du-XfOwXw/let-several-apps-use-same-facebook-app.html" title="Let Several Apps Use the same Facebook App ID" /><author><name>Vince Yuan</name><uri>http://www.blogger.com/profile/07268121275972731120</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://4.bp.blogspot.com/-6Wwm1UuOq44/Tlw888oGwJI/AAAAAAAAACM/5ZxWO4wtkp0/s220/VinceHead2.jpg" /></author><thr:total>0</thr:total><content type="html">If you want to let your user post something from your app onto Facebook, you need to register a Facebook app and call Facebook SDK to post messages. But if you have a free version and a paid version, you would like to share the same Facebook App ID.
Just follow Facebook tutorial to register Facebook App and config your apps. https://developers.facebook.com/docs/mobile/ios/build/
The only one 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/oN92d-St3bKLVf0-cZIPNtBwurI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oN92d-St3bKLVf0-cZIPNtBwurI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/oN92d-St3bKLVf0-cZIPNtBwurI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oN92d-St3bKLVf0-cZIPNtBwurI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VinceYuansBlog/~4/Z2Du-XfOwXw" height="1" width="1"/&gt;</content><feedburner:origLink>http://vinceyuan.blogspot.com/2011/10/let-several-apps-use-same-facebook-app.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8MSXY5eSp7ImA9WhRRFk8.&quot;"><id>tag:blogger.com,1999:blog-9484269.post-5819071528137627144</id><published>2011-10-09T17:35:00.001+08:00</published><updated>2011-11-30T11:48:08.821+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-30T11:48:08.821+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Git" /><category scheme="http://www.blogger.com/atom/ns#" term="Xcode4" /><category scheme="http://www.blogger.com/atom/ns#" term="Mac" /><category scheme="http://www.blogger.com/atom/ns#" term="iOS" /><title>Xcode 4 and Git</title><link rel="replies" type="application/atom+xml" href="http://vinceyuan.blogspot.com/feeds/5819071528137627144/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9484269&amp;postID=5819071528137627144" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/5819071528137627144?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/5819071528137627144?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VinceYuansBlog/~3/TO0VKOayMTc/xcode-4-and-git.html" title="Xcode 4 and Git" /><author><name>Vince Yuan</name><uri>http://www.blogger.com/profile/07268121275972731120</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://4.bp.blogspot.com/-6Wwm1UuOq44/Tlw888oGwJI/AAAAAAAAACM/5ZxWO4wtkp0/s220/VinceHead2.jpg" /></author><thr:total>0</thr:total><content type="html">I am new to Git. I used Perforce (P4) before, so I thought it is easy to use Git. Actually I was wrong. Git is not complex, but it has different concept.
In P4, we just check out and check in files. In Git, checking in has a new name Commit. When I committed my first change, I was surprised to see it does not appear in the server. Actually, Git did not really submit my code to the server. It was 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/uqDiZgyakQCxlD_-x1O4ELfGQSg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uqDiZgyakQCxlD_-x1O4ELfGQSg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/uqDiZgyakQCxlD_-x1O4ELfGQSg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uqDiZgyakQCxlD_-x1O4ELfGQSg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VinceYuansBlog/~4/TO0VKOayMTc" height="1" width="1"/&gt;</content><feedburner:origLink>http://vinceyuan.blogspot.com/2011/10/xcode-4-and-git.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08GRH4zcCp7ImA9WhdUF0k.&quot;"><id>tag:blogger.com,1999:blog-9484269.post-1635314930007630320</id><published>2011-10-04T23:23:00.001+08:00</published><updated>2011-10-04T23:23:45.088+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-04T23:23:45.088+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Cocos2D" /><title>Fixing the Problem of Cocos2D Game Disappearing in iPhone Simulator</title><link rel="replies" type="application/atom+xml" href="http://vinceyuan.blogspot.com/feeds/1635314930007630320/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9484269&amp;postID=1635314930007630320" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/1635314930007630320?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/1635314930007630320?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VinceYuansBlog/~3/5AwvJenuleI/fixing-problem-of-cocos2d-game.html" title="Fixing the Problem of Cocos2D Game Disappearing in iPhone Simulator" /><author><name>Vince Yuan</name><uri>http://www.blogger.com/profile/07268121275972731120</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://4.bp.blogspot.com/-6Wwm1UuOq44/Tlw888oGwJI/AAAAAAAAACM/5ZxWO4wtkp0/s220/VinceHead2.jpg" /></author><thr:total>0</thr:total><content type="html">I Created a new Cocos2D game. But it did not work well in iPhone simulator. It often disappeared in the simulator. I had to relaunch the simulator or relaunch Xcode. It was very boring. I didn't know why, because this project was still very simple.
I noticed there is a warning that Info.plist is included in the target. I did the following things:
1. Renamed Info.plist to ProjectName-Info.plist
2.
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/VbYQTqFG7GqvYMIw331pGgYToc0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VbYQTqFG7GqvYMIw331pGgYToc0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/VbYQTqFG7GqvYMIw331pGgYToc0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VbYQTqFG7GqvYMIw331pGgYToc0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VinceYuansBlog/~4/5AwvJenuleI" height="1" width="1"/&gt;</content><feedburner:origLink>http://vinceyuan.blogspot.com/2011/10/fixing-problem-of-cocos2d-game.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C04CQnk7fyp7ImA9WhdUF0k.&quot;"><id>tag:blogger.com,1999:blog-9484269.post-7244870319854504665</id><published>2011-09-29T15:26:00.001+08:00</published><updated>2011-10-04T23:26:03.707+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-04T23:26:03.707+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Cocos2D" /><category scheme="http://www.blogger.com/atom/ns#" term="Game" /><category scheme="http://www.blogger.com/atom/ns#" term="iOS" /><title>Why Use Cocos2D Instead of UIKit to Develop Games</title><link rel="replies" type="application/atom+xml" href="http://vinceyuan.blogspot.com/feeds/7244870319854504665/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9484269&amp;postID=7244870319854504665" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/7244870319854504665?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/7244870319854504665?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VinceYuansBlog/~3/VUl4G4Wxph8/why-use-cocos2d-instead-of-uikit-to.html" title="Why Use Cocos2D Instead of UIKit to Develop Games" /><author><name>Vince Yuan</name><uri>http://www.blogger.com/profile/07268121275972731120</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://4.bp.blogspot.com/-6Wwm1UuOq44/Tlw888oGwJI/AAAAAAAAACM/5ZxWO4wtkp0/s220/VinceHead2.jpg" /></author><thr:total>1</thr:total><content type="html">I am leaning Cocos2D for iPhone. I am thinking why we should use cocos2D instead of UIKit to develop games.
Here are the reasons:
1. Cocos2D is built on OpenGL. You may not know OpenGL.
2. Cocos2D supports tiled map.
3. Cocos2D helps you reduce memory cost by supporting atlas images and providing CCSpriteBatchNode.
4. Cocos2D supports parallax backgrounds.
5. Cocos2D has more animations and 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/6b_t9V4WIiamuXrhXIK5NodEN3E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6b_t9V4WIiamuXrhXIK5NodEN3E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/6b_t9V4WIiamuXrhXIK5NodEN3E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6b_t9V4WIiamuXrhXIK5NodEN3E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VinceYuansBlog/~4/VUl4G4Wxph8" height="1" width="1"/&gt;</content><feedburner:origLink>http://vinceyuan.blogspot.com/2011/09/why-use-cocos2d-instead-of-uikit-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0EESX06cCp7ImA9WhdQF0s.&quot;"><id>tag:blogger.com,1999:blog-9484269.post-8083942340353894862</id><published>2011-08-19T22:50:00.001+08:00</published><updated>2011-08-19T22:53:28.318+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-19T22:53:28.318+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Xcode4" /><category scheme="http://www.blogger.com/atom/ns#" term="Mac" /><title>Add Tool Tip to Controls with Xcode4</title><link rel="replies" type="application/atom+xml" href="http://vinceyuan.blogspot.com/feeds/8083942340353894862/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9484269&amp;postID=8083942340353894862" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/8083942340353894862?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/8083942340353894862?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VinceYuansBlog/~3/QYm8Xcsh4jA/add-tool-tip-to-controls-with-xcode4.html" title="Add Tool Tip to Controls with Xcode4" /><author><name>Vince Yuan</name><uri>http://www.blogger.com/profile/07268121275972731120</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://4.bp.blogspot.com/-6Wwm1UuOq44/Tlw888oGwJI/AAAAAAAAACM/5ZxWO4wtkp0/s220/VinceHead2.jpg" /></author><thr:total>0</thr:total><content type="html">Like many Apple developers, I was a developer on Windows platform before. It is very easy to add tool tip to a control (e.g. a button) in Visual Studio. But I don't know how to do it in Xcode. When I am working on iPhone apps, it is not a problem because iPhone apps need not tool tip. But it is a problem when I am working on Mac apps.
Actually it is easy to add tool tip in Xcode 4. Looks like 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/6HF6jEKztX5IAKjuRza15HMBSkU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6HF6jEKztX5IAKjuRza15HMBSkU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/6HF6jEKztX5IAKjuRza15HMBSkU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6HF6jEKztX5IAKjuRza15HMBSkU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VinceYuansBlog/~4/QYm8Xcsh4jA" height="1" width="1"/&gt;</content><feedburner:origLink>http://vinceyuan.blogspot.com/2011/08/add-tool-tip-to-controls-with-xcode4.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkEBRXk7eCp7ImA9WhdSE00.&quot;"><id>tag:blogger.com,1999:blog-9484269.post-8171965947952153020</id><published>2011-07-18T19:40:00.001+08:00</published><updated>2011-07-22T11:17:34.700+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-22T11:17:34.700+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Mac" /><category scheme="http://www.blogger.com/atom/ns#" term="General" /><title>Making Your Mac App Support Full Screen in 1 Minute</title><link rel="replies" type="application/atom+xml" href="http://vinceyuan.blogspot.com/feeds/8171965947952153020/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9484269&amp;postID=8171965947952153020" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/8171965947952153020?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/8171965947952153020?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VinceYuansBlog/~3/KSbv61BwkaM/making-your-mac-app-support-full-screen.html" title="Making Your Mac App Support Full Screen in 1 Minute" /><author><name>Vince Yuan</name><uri>http://www.blogger.com/profile/07268121275972731120</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://4.bp.blogspot.com/-6Wwm1UuOq44/Tlw888oGwJI/AAAAAAAAACM/5ZxWO4wtkp0/s220/VinceHead2.jpg" /></author><thr:total>2</thr:total><content type="html">Full screen mode is a cool feature on Mac OS X Lion. I'd like to let my app support full screen. I googled, but did not find any tutorial. I thought there would be an option like'Support full screen' when a new project is created with the new Xcode 4.1 on Lion. Surprisingly, there is no that option. Today I watched a video of WWDC2011 and made this article. I am sure you can follow the steps to 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zjLYL2IBObv_QOV9paznZng-jjI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zjLYL2IBObv_QOV9paznZng-jjI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zjLYL2IBObv_QOV9paznZng-jjI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zjLYL2IBObv_QOV9paznZng-jjI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VinceYuansBlog/~4/KSbv61BwkaM" height="1" width="1"/&gt;</content><feedburner:origLink>http://vinceyuan.blogspot.com/2011/07/making-your-mac-app-support-full-screen.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIMR3k9eip7ImA9WhdTGUg.&quot;"><id>tag:blogger.com,1999:blog-9484269.post-4955391274600055786</id><published>2011-07-18T11:09:00.001+08:00</published><updated>2011-07-18T11:09:46.762+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-18T11:09:46.762+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="General" /><category scheme="http://www.blogger.com/atom/ns#" term="iOS" /><title>Decreasing the iPhone/iPad app size</title><link rel="replies" type="application/atom+xml" href="http://vinceyuan.blogspot.com/feeds/4955391274600055786/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9484269&amp;postID=4955391274600055786" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/4955391274600055786?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/4955391274600055786?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VinceYuansBlog/~3/cypmApZMl0I/decreasing-iphoneipad-app-size.html" title="Decreasing the iPhone/iPad app size" /><author><name>Vince Yuan</name><uri>http://www.blogger.com/profile/07268121275972731120</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://4.bp.blogspot.com/-6Wwm1UuOq44/Tlw888oGwJI/AAAAAAAAACM/5ZxWO4wtkp0/s220/VinceHead2.jpg" /></author><thr:total>0</thr:total><content type="html">1. Delete unnecessary files.
2. Convert PNG images to JPG format. We like PNG because it supports transparency. But for those images without transparency, the size of png is twice of jpg file. I converted PNG files to JPG and reduced the app size from 17MB to 9MB.
3. For the universal app, iPad version could reuse retina @2x images.


&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gas03f3jw92WsR0spbN591BqOOU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gas03f3jw92WsR0spbN591BqOOU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gas03f3jw92WsR0spbN591BqOOU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gas03f3jw92WsR0spbN591BqOOU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VinceYuansBlog/~4/cypmApZMl0I" height="1" width="1"/&gt;</content><feedburner:origLink>http://vinceyuan.blogspot.com/2011/07/decreasing-iphoneipad-app-size.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUHRnc9eSp7ImA9WhdTGUg.&quot;"><id>tag:blogger.com,1999:blog-9484269.post-6283301618818845416</id><published>2011-07-18T11:03:00.001+08:00</published><updated>2011-07-18T11:03:57.961+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-18T11:03:57.961+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Animation" /><category scheme="http://www.blogger.com/atom/ns#" term="iOS" /><title>The way to stop UIView animations</title><link rel="replies" type="application/atom+xml" href="http://vinceyuan.blogspot.com/feeds/6283301618818845416/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9484269&amp;postID=6283301618818845416" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/6283301618818845416?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/6283301618818845416?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VinceYuansBlog/~3/xuXsCJHsrfU/way-to-stop-uiview-animations.html" title="The way to stop UIView animations" /><author><name>Vince Yuan</name><uri>http://www.blogger.com/profile/07268121275972731120</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://4.bp.blogspot.com/-6Wwm1UuOq44/Tlw888oGwJI/AAAAAAAAACM/5ZxWO4wtkp0/s220/VinceHead2.jpg" /></author><thr:total>1</thr:total><content type="html">#import &amp;lt;QuartzCore/QuartzCore.h&amp;gt;
[self.view.layer removeAllAnimations];


&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nBjpUF3EBsEQrFGBRJCmxxCAabI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nBjpUF3EBsEQrFGBRJCmxxCAabI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nBjpUF3EBsEQrFGBRJCmxxCAabI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nBjpUF3EBsEQrFGBRJCmxxCAabI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VinceYuansBlog/~4/xuXsCJHsrfU" height="1" width="1"/&gt;</content><feedburner:origLink>http://vinceyuan.blogspot.com/2011/07/way-to-stop-uiview-animations.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUASHo-eip7ImA9WhdTGUg.&quot;"><id>tag:blogger.com,1999:blog-9484269.post-2503800402462685058</id><published>2011-07-18T11:02:00.001+08:00</published><updated>2011-07-18T11:04:09.452+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-18T11:04:09.452+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Xcode4" /><category scheme="http://www.blogger.com/atom/ns#" term="Mac" /><category scheme="http://www.blogger.com/atom/ns#" term="General" /><category scheme="http://www.blogger.com/atom/ns#" term="iOS" /><title>Adding a framework in Xcode 4</title><link rel="replies" type="application/atom+xml" href="http://vinceyuan.blogspot.com/feeds/2503800402462685058/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9484269&amp;postID=2503800402462685058" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/2503800402462685058?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/2503800402462685058?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VinceYuansBlog/~3/1y0oO1xUHDA/adding-framework-in-xcode-4.html" title="Adding a framework in Xcode 4" /><author><name>Vince Yuan</name><uri>http://www.blogger.com/profile/07268121275972731120</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://4.bp.blogspot.com/-6Wwm1UuOq44/Tlw888oGwJI/AAAAAAAAACM/5ZxWO4wtkp0/s220/VinceHead2.jpg" /></author><thr:total>0</thr:total><content type="html">The steps of adding a framework in Xcode 4:
1. Click current project in Project navigator.
2. Click a target in Project editor.
3. Choose Build Phases tab.
4. Expand Link Binary With Libraries
5. Click + button, add a framework.
6. Go back to Project navigator. You will see the new framework added. You can drag it into Framework group. If you have more than one target, you need not repeat the 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8ZepdlfuNiT2TRJgnq1S6d_0OzU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8ZepdlfuNiT2TRJgnq1S6d_0OzU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8ZepdlfuNiT2TRJgnq1S6d_0OzU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8ZepdlfuNiT2TRJgnq1S6d_0OzU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VinceYuansBlog/~4/1y0oO1xUHDA" height="1" width="1"/&gt;</content><feedburner:origLink>http://vinceyuan.blogspot.com/2011/07/adding-framework-in-xcode-4.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUADRHg4cCp7ImA9WhdTGUg.&quot;"><id>tag:blogger.com,1999:blog-9484269.post-6566720518589363491</id><published>2011-07-18T10:56:00.001+08:00</published><updated>2011-07-18T10:56:15.638+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-18T10:56:15.638+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="General" /><category scheme="http://www.blogger.com/atom/ns#" term="iOS" /><title>What's New in iOS 5 sdk</title><link rel="replies" type="application/atom+xml" href="http://vinceyuan.blogspot.com/feeds/6566720518589363491/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9484269&amp;postID=6566720518589363491" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/6566720518589363491?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/6566720518589363491?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VinceYuansBlog/~3/mAW6Syc9TPY/what-new-in-ios-5-sdk.html" title="What&amp;#39;s New in iOS 5 sdk" /><author><name>Vince Yuan</name><uri>http://www.blogger.com/profile/07268121275972731120</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://4.bp.blogspot.com/-6Wwm1UuOq44/Tlw888oGwJI/AAAAAAAAACM/5ZxWO4wtkp0/s220/VinceHead2.jpg" /></author><thr:total>1</thr:total><content type="html">The key developer-related features introduced in iOS 5.0 (Official doc):
1. iCloud
2. Storyboard
Storyboard is not xib. "A storyboard file captures your entire user interface in one place and lets you define both the individual view controllers and the transitions between those view controllers." I think It sounds like Keynote or Powerpoint. You can design every page's content and the transition 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/VgTsLLFeMmNZMjwaCIMWepPk7mk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VgTsLLFeMmNZMjwaCIMWepPk7mk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/VgTsLLFeMmNZMjwaCIMWepPk7mk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VgTsLLFeMmNZMjwaCIMWepPk7mk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VinceYuansBlog/~4/mAW6Syc9TPY" height="1" width="1"/&gt;</content><feedburner:origLink>http://vinceyuan.blogspot.com/2011/07/what-new-in-ios-5-sdk.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUIAQXg_fSp7ImA9WhdTGUg.&quot;"><id>tag:blogger.com,1999:blog-9484269.post-142344956082967860</id><published>2011-07-18T10:52:00.001+08:00</published><updated>2011-07-18T10:52:20.645+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-18T10:52:20.645+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Animation" /><title>Showing an animation when NSView loading</title><link rel="replies" type="application/atom+xml" href="http://vinceyuan.blogspot.com/feeds/142344956082967860/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9484269&amp;postID=142344956082967860" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/142344956082967860?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/142344956082967860?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VinceYuansBlog/~3/hcfYZnwmeak/showing-animation-when-nsview-loading.html" title="Showing an animation when NSView loading" /><author><name>Vince Yuan</name><uri>http://www.blogger.com/profile/07268121275972731120</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://4.bp.blogspot.com/-6Wwm1UuOq44/Tlw888oGwJI/AAAAAAAAACM/5ZxWO4wtkp0/s220/VinceHead2.jpg" /></author><thr:total>0</thr:total><content type="html">An UIView of one of my iOS app shows a fade-in animation. I implemented this animation in viewDidLoad. When I was porting this app onto Mac OS X, I found there is no viewDidLoad.
I tried adding the fade-in animation in awakeFromNib, but no animation appeared.
My solution: Put the animation code in a method and call it after a short delay.
[self performSelector:@selector(animationShowButton) 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/EIYG6ba0pwoIe4dWAtEXN5668iM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EIYG6ba0pwoIe4dWAtEXN5668iM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/EIYG6ba0pwoIe4dWAtEXN5668iM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EIYG6ba0pwoIe4dWAtEXN5668iM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VinceYuansBlog/~4/hcfYZnwmeak" height="1" width="1"/&gt;</content><feedburner:origLink>http://vinceyuan.blogspot.com/2011/07/showing-animation-when-nsview-loading.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYNRHwzfCp7ImA9WhdTGUg.&quot;"><id>tag:blogger.com,1999:blog-9484269.post-6875384471964157875</id><published>2011-07-18T10:46:00.001+08:00</published><updated>2011-07-18T10:46:35.284+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-18T10:46:35.284+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Animation" /><title>Implementing Fade-In Fade-Out animation in NSView on Mac OS X</title><link rel="replies" type="application/atom+xml" href="http://vinceyuan.blogspot.com/feeds/6875384471964157875/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9484269&amp;postID=6875384471964157875" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/6875384471964157875?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/6875384471964157875?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VinceYuansBlog/~3/7fS35ymSBMM/implementing-fade-in-fade-out-animation.html" title="Implementing Fade-In Fade-Out animation in NSView on Mac OS X" /><author><name>Vince Yuan</name><uri>http://www.blogger.com/profile/07268121275972731120</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://4.bp.blogspot.com/-6Wwm1UuOq44/Tlw888oGwJI/AAAAAAAAACM/5ZxWO4wtkp0/s220/VinceHead2.jpg" /></author><thr:total>0</thr:total><content type="html">It is easy to implement Fade-In animation in UIView on iOS. We just need to change alpha value in the animation.
theView.alpha = 0.0f;
[UIView beginAnimations:@"fadeIn" context:nil];
[UIView setAnimationDuration:1.0];
theView.alpha = 1.0f;
[UIView commitAnimations];
But the following code does not work in NSView on Mac Snow leopard.
[theView setAlphaValue:0.0f];
[[theView animator] setAlphaValue:
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/alRP1X2MT94iQerLGAe9hCRtRV0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/alRP1X2MT94iQerLGAe9hCRtRV0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/alRP1X2MT94iQerLGAe9hCRtRV0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/alRP1X2MT94iQerLGAe9hCRtRV0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VinceYuansBlog/~4/7fS35ymSBMM" height="1" width="1"/&gt;</content><feedburner:origLink>http://vinceyuan.blogspot.com/2011/07/implementing-fade-in-fade-out-animation.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEEAQn4zfSp7ImA9WhdTGUg.&quot;"><id>tag:blogger.com,1999:blog-9484269.post-8396799787887275441</id><published>2011-07-18T10:37:00.001+08:00</published><updated>2011-07-18T10:37:23.085+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-18T10:37:23.085+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="General" /><title>Change the parameter order in Objective-C formatting string</title><link rel="replies" type="application/atom+xml" href="http://vinceyuan.blogspot.com/feeds/8396799787887275441/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9484269&amp;postID=8396799787887275441" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/8396799787887275441?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/8396799787887275441?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VinceYuansBlog/~3/sEl6OVGcaFI/change-parameter-order-in-objective-c.html" title="Change the parameter order in Objective-C formatting string" /><author><name>Vince Yuan</name><uri>http://www.blogger.com/profile/07268121275972731120</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://4.bp.blogspot.com/-6Wwm1UuOq44/Tlw888oGwJI/AAAAAAAAACM/5ZxWO4wtkp0/s220/VinceHead2.jpg" /></author><thr:total>0</thr:total><content type="html">(I got this idea from cocoa programming for mac os x 3rd)
When we do localizations, the problem is the words order of a language differs to other languages. For example, this sentence "Ted wants a scooter." may be something like "A Scooter is what Ted wants" in another language.
You can localize strings this way:
NSString * theFormat = NSLocalizedString(@"WANTS", @"%@ wants a %@"); x = [NSString 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DLcEj5LXoJxJG6i5lUKzxKtluuY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DLcEj5LXoJxJG6i5lUKzxKtluuY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DLcEj5LXoJxJG6i5lUKzxKtluuY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DLcEj5LXoJxJG6i5lUKzxKtluuY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VinceYuansBlog/~4/sEl6OVGcaFI" height="1" width="1"/&gt;</content><feedburner:origLink>http://vinceyuan.blogspot.com/2011/07/change-parameter-order-in-objective-c.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4BRHk-eyp7ImA9WhZaFEU.&quot;"><id>tag:blogger.com,1999:blog-9484269.post-2223178747086088575</id><published>2011-06-30T22:50:00.001+08:00</published><updated>2011-07-01T09:49:15.753+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-01T09:49:15.753+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WWDC2011" /><category scheme="http://www.blogger.com/atom/ns#" term="LearningNotes" /><title>WWDC2011 Session 323 Introducing Automatic Reference Counting</title><link rel="replies" type="application/atom+xml" href="http://vinceyuan.blogspot.com/feeds/2223178747086088575/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9484269&amp;postID=2223178747086088575" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/2223178747086088575?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/2223178747086088575?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VinceYuansBlog/~3/CnA2NyMW9qc/wwdc2011-session-323-introducing.html" title="WWDC2011 Session 323 Introducing Automatic Reference Counting" /><author><name>Vince Yuan</name><uri>http://www.blogger.com/profile/07268121275972731120</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://4.bp.blogspot.com/-6Wwm1UuOq44/Tlw888oGwJI/AAAAAAAAACM/5ZxWO4wtkp0/s220/VinceHead2.jpg" /></author><thr:total>1</thr:total><content type="html">Summary: Automatic Reference Counting (ARC) dramatically simplifies memory management in Objective-C. This session introduces what ARC is, how it is implemented and how to migrate to ARC. Apple asks every developer to move Objective-C code to ARC.
Problems of memory management:
Many (new) developers do not understand reference counting. They don’t know when to retain/release/autorelease. Memory 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/oAJ8kwgbYKZH2t4piApJPlHae1E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oAJ8kwgbYKZH2t4piApJPlHae1E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/oAJ8kwgbYKZH2t4piApJPlHae1E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oAJ8kwgbYKZH2t4piApJPlHae1E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VinceYuansBlog/~4/CnA2NyMW9qc" height="1" width="1"/&gt;</content><feedburner:origLink>http://vinceyuan.blogspot.com/2011/06/wwdc2011-session-323-introducing.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0MNSHs7fSp7ImA9WhZaFEk.&quot;"><id>tag:blogger.com,1999:blog-9484269.post-1950528018828179585</id><published>2011-06-30T10:54:00.001+08:00</published><updated>2011-06-30T22:51:39.505+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-30T22:51:39.505+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WWDC2011" /><category scheme="http://www.blogger.com/atom/ns#" term="LearningNotes" /><title>WWDC2011 Learning Notes and Index</title><link rel="replies" type="application/atom+xml" href="http://vinceyuan.blogspot.com/feeds/1950528018828179585/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9484269&amp;postID=1950528018828179585" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/1950528018828179585?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/1950528018828179585?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VinceYuansBlog/~3/WsoGWO7Afuk/wwdc2011-learning-notes-and-index.html" title="WWDC2011 Learning Notes and Index" /><author><name>Vince Yuan</name><uri>http://www.blogger.com/profile/07268121275972731120</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://4.bp.blogspot.com/-6Wwm1UuOq44/Tlw888oGwJI/AAAAAAAAACM/5ZxWO4wtkp0/s220/VinceHead2.jpg" /></author><thr:total>0</thr:total><content type="html">WWDC2011videos come out before I finish WWDC2010 videos.
It's time to learn WWDC2011 videos. :-)
Index
WWDC2011 Session 323 Introducing Automatic Reference Counting


&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Kp8KXyenVbv-kgISxQFaAceuLEo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Kp8KXyenVbv-kgISxQFaAceuLEo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Kp8KXyenVbv-kgISxQFaAceuLEo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Kp8KXyenVbv-kgISxQFaAceuLEo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VinceYuansBlog/~4/WsoGWO7Afuk" height="1" width="1"/&gt;</content><feedburner:origLink>http://vinceyuan.blogspot.com/2011/06/wwdc2011-learning-notes-and-index.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUYDQnY6eip7ImA9WhZQE0s.&quot;"><id>tag:blogger.com,1999:blog-9484269.post-8556025629842951802</id><published>2011-04-21T13:19:00.001+08:00</published><updated>2011-04-21T13:19:33.812+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-21T13:19:33.812+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Mac" /><title>Programming with Core Animation on Mac</title><link rel="replies" type="application/atom+xml" href="http://vinceyuan.blogspot.com/feeds/8556025629842951802/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9484269&amp;postID=8556025629842951802" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/8556025629842951802?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/8556025629842951802?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VinceYuansBlog/~3/FmA98zUZlF8/programming-with-core-animation-on-mac.html" title="Programming with Core Animation on Mac" /><author><name>Vince Yuan</name><uri>http://www.blogger.com/profile/07268121275972731120</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://4.bp.blogspot.com/-6Wwm1UuOq44/Tlw888oGwJI/AAAAAAAAACM/5ZxWO4wtkp0/s220/VinceHead2.jpg" /></author><thr:total>0</thr:total><content type="html">Learning notes of Core Animation for Mac OS X and the iPhone
1. The Simplest animation (CABasicAnimation)
Without animation: [theView setFrame:newFrame];
With animation: [[theView animator] setFrame:newFrame];
[theView animator] is the Animator Proxy which is simply finding an animation and then invoking it. The default animation is CABasicAnimation.
2. CAKeyframeAnimation
With 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zsxGPrm1WLiqpBQ_2RXclqpp7vQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zsxGPrm1WLiqpBQ_2RXclqpp7vQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zsxGPrm1WLiqpBQ_2RXclqpp7vQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zsxGPrm1WLiqpBQ_2RXclqpp7vQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VinceYuansBlog/~4/FmA98zUZlF8" height="1" width="1"/&gt;</content><feedburner:origLink>http://vinceyuan.blogspot.com/2011/04/programming-with-core-animation-on-mac.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0AMR346eyp7ImA9WhZRFU4.&quot;"><id>tag:blogger.com,1999:blog-9484269.post-166131640206714376</id><published>2011-04-11T23:29:00.001+08:00</published><updated>2011-04-11T23:29:46.013+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-11T23:29:46.013+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Xcode4" /><title>Add an existing framework in Xcode 4</title><link rel="replies" type="application/atom+xml" href="http://vinceyuan.blogspot.com/feeds/166131640206714376/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9484269&amp;postID=166131640206714376" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/166131640206714376?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/166131640206714376?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VinceYuansBlog/~3/Q-5oAOzt9rA/add-existing-framework-in-xcode-4.html" title="Add an existing framework in Xcode 4" /><author><name>Vince Yuan</name><uri>http://www.blogger.com/profile/07268121275972731120</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://4.bp.blogspot.com/-6Wwm1UuOq44/Tlw888oGwJI/AAAAAAAAACM/5ZxWO4wtkp0/s220/VinceHead2.jpg" /></author><thr:total>0</thr:total><content type="html">Steps to add an existing framework in Xcode 4:
1. Click the project in the project navigator.
2. In the project editor, click a target.
3. Select 'Build Phases' tab
4. Expand 'Link Binary With Libraries'
5. Click '+' button to add a framework.
6. Go back to the project navigator, you will see the new framework. You can drag it to 'Frameworks' group.


&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_R9cha4LpnT3Re-kxl2ks2Pjaug/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_R9cha4LpnT3Re-kxl2ks2Pjaug/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_R9cha4LpnT3Re-kxl2ks2Pjaug/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_R9cha4LpnT3Re-kxl2ks2Pjaug/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VinceYuansBlog/~4/Q-5oAOzt9rA" height="1" width="1"/&gt;</content><feedburner:origLink>http://vinceyuan.blogspot.com/2011/04/add-existing-framework-in-xcode-4.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cDQ3w-cCp7ImA9WhZaFEU.&quot;"><id>tag:blogger.com,1999:blog-9484269.post-51287633080647332</id><published>2011-04-08T12:49:00.001+08:00</published><updated>2011-07-01T09:51:12.258+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-01T09:51:12.258+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WWDC2010" /><category scheme="http://www.blogger.com/atom/ns#" term="GrandCentralDispatch" /><category scheme="http://www.blogger.com/atom/ns#" term="LearningNotes" /><category scheme="http://www.blogger.com/atom/ns#" term="Block" /><title>WWDC2010 Session211 Simplifying iPhone App Development with GCD</title><link rel="replies" type="application/atom+xml" href="http://vinceyuan.blogspot.com/feeds/51287633080647332/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9484269&amp;postID=51287633080647332" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/51287633080647332?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/51287633080647332?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VinceYuansBlog/~3/hUnJfvUfiSs/wwdc2010-session211-simplifying-iphone.html" title="WWDC2010 Session211 Simplifying iPhone App Development with GCD" /><author><name>Vince Yuan</name><uri>http://www.blogger.com/profile/07268121275972731120</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://4.bp.blogspot.com/-6Wwm1UuOq44/Tlw888oGwJI/AAAAAAAAACM/5ZxWO4wtkp0/s220/VinceHead2.jpg" /></author><thr:total>0</thr:total><content type="html">GCD Overview
1. GCD is part of libSystem.dylib
2. Available to all Apps.
- #include &amp;lt;dispatch/dispatch.h&amp;gt;
3. GCD API has block-based and function-based variants
- Focus today on block-based API
Introduction to GCD recap
1. Blocks
- dispatch_async()
2. Queues
- Lightweight list of blocks
- Enqueue/dequeue is FIFO
3. dispatch_get_main_queue()
- Main thread/main runloop
4. dispatch_queue_create()
- 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/e-pvb5Wd7BzMZkmURIt4Ce0fceA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/e-pvb5Wd7BzMZkmURIt4Ce0fceA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/e-pvb5Wd7BzMZkmURIt4Ce0fceA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/e-pvb5Wd7BzMZkmURIt4Ce0fceA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VinceYuansBlog/~4/hUnJfvUfiSs" height="1" width="1"/&gt;</content><feedburner:origLink>http://vinceyuan.blogspot.com/2011/04/wwdc2010-session211-simplifying-iphone.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUEHQXo7fyp7ImA9WhZQE0s.&quot;"><id>tag:blogger.com,1999:blog-9484269.post-1803740052585118468</id><published>2011-04-07T15:31:00.000+08:00</published><updated>2011-04-21T13:27:10.407+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-21T13:27:10.407+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WWDC2010" /><category scheme="http://www.blogger.com/atom/ns#" term="GrandCentralDispatch" /><category scheme="http://www.blogger.com/atom/ns#" term="LearningNotes" /><category scheme="http://www.blogger.com/atom/ns#" term="Block" /><title>WWDC2010 Session206 Introducing Blocks and Grand Central Dispatch (2)</title><link rel="replies" type="application/atom+xml" href="http://vinceyuan.blogspot.com/feeds/1803740052585118468/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9484269&amp;postID=1803740052585118468" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/1803740052585118468?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/1803740052585118468?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VinceYuansBlog/~3/3OHqdk54OFs/wwdc2010-session206-introducing-blocks_07.html" title="WWDC2010 Session206 Introducing Blocks and Grand Central Dispatch (2)" /><author><name>Vince Yuan</name><uri>http://www.blogger.com/profile/07268121275972731120</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://4.bp.blogspot.com/-6Wwm1UuOq44/Tlw888oGwJI/AAAAAAAAACM/5ZxWO4wtkp0/s220/VinceHead2.jpg" /></author><thr:total>0</thr:total><content type="html">Grand Central Dispatch
With GCD, you can make your app responsive. Threading is hard. Using GCD makes it simple and fun. You need not do explicit thread management. Cool!
Keeping your app responsive：
1. Do not block the main thread
2. Move work to another thread
3. Update UI back on main threaad
Code without GCD:
- (void)addTweetWithMsg:(NSString*)msg url:(NSURL*)url {
  // Controller UI callback
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nc-IdE-p7IutQyfS9HogI-K_-nI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nc-IdE-p7IutQyfS9HogI-K_-nI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nc-IdE-p7IutQyfS9HogI-K_-nI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nc-IdE-p7IutQyfS9HogI-K_-nI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VinceYuansBlog/~4/3OHqdk54OFs" height="1" width="1"/&gt;</content><feedburner:origLink>http://vinceyuan.blogspot.com/2011/04/wwdc2010-session206-introducing-blocks_07.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUIHQn88cCp7ImA9WhZQE0s.&quot;"><id>tag:blogger.com,1999:blog-9484269.post-805886559893172092</id><published>2011-04-06T16:04:00.000+08:00</published><updated>2011-04-21T13:25:33.178+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-21T13:25:33.178+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WWDC2010" /><category scheme="http://www.blogger.com/atom/ns#" term="GrandCentralDispatch" /><category scheme="http://www.blogger.com/atom/ns#" term="LearningNotes" /><category scheme="http://www.blogger.com/atom/ns#" term="Block" /><title>WWDC2010 Session206 Introducing Blocks and Grand Central Dispatch (1)</title><link rel="replies" type="application/atom+xml" href="http://vinceyuan.blogspot.com/feeds/805886559893172092/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9484269&amp;postID=805886559893172092" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/805886559893172092?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/805886559893172092?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VinceYuansBlog/~3/3-uvsNys1n8/wwdc2010-session206-introducing-blocks.html" title="WWDC2010 Session206 Introducing Blocks and Grand Central Dispatch (1)" /><author><name>Vince Yuan</name><uri>http://www.blogger.com/profile/07268121275972731120</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://4.bp.blogspot.com/-6Wwm1UuOq44/Tlw888oGwJI/AAAAAAAAACM/5ZxWO4wtkp0/s220/VinceHead2.jpg" /></author><thr:total>0</thr:total><content type="html">Blocks and Grand Central Dispatch are available on iOS4, and have been available on Snow Leopard.
Technology Stack
  
Blocks
Blacks are available in C++ and Objective-C++.
Basic Blocks
We will use ^ for blocks because this character is unique and could not be used as operator in C++.
Block Literal Syntax
^ [Return type][Arguments] { Body }
Just looks like a function without function name starting
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/36TtlOD6lzqG5B8aYs1CQ7ov3VA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/36TtlOD6lzqG5B8aYs1CQ7ov3VA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/36TtlOD6lzqG5B8aYs1CQ7ov3VA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/36TtlOD6lzqG5B8aYs1CQ7ov3VA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VinceYuansBlog/~4/3-uvsNys1n8" height="1" width="1"/&gt;</content><feedburner:origLink>http://vinceyuan.blogspot.com/2011/04/wwdc2010-session206-introducing-blocks.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcFRH04eip7ImA9WhZREEg.&quot;"><id>tag:blogger.com,1999:blog-9484269.post-4379482233071957648</id><published>2011-04-06T10:14:00.001+08:00</published><updated>2011-04-06T10:30:15.332+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-06T10:30:15.332+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Xcode4" /><category scheme="http://www.blogger.com/atom/ns#" term="WWDC2010" /><category scheme="http://www.blogger.com/atom/ns#" term="LearningNotes" /><category scheme="http://www.blogger.com/atom/ns#" term="LLVM" /><title>WWDC2010 Session313 LLVM Technologies in Depth</title><link rel="replies" type="application/atom+xml" href="http://vinceyuan.blogspot.com/feeds/4379482233071957648/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9484269&amp;postID=4379482233071957648" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/4379482233071957648?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/4379482233071957648?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VinceYuansBlog/~3/OB55iBYvtDc/wwdc-session313-llvm-technologies-in.html" title="WWDC2010 Session313 LLVM Technologies in Depth" /><author><name>Vince Yuan</name><uri>http://www.blogger.com/profile/07268121275972731120</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://4.bp.blogspot.com/-6Wwm1UuOq44/Tlw888oGwJI/AAAAAAAAACM/5ZxWO4wtkp0/s220/VinceHead2.jpg" /></author><thr:total>0</thr:total><content type="html">This session covers: Clang in Xcode 4 (Code completion, Fix-it, Indexing and Edit-all-in-scope), Clients of LLVM(LLDB, Integrated assembler).
Using Clang Inside Xcode 4
Many contents have been covered in Session 312. Just more examples.
Benefits of LLDB Design
Higher fidelity expression parsing and evaluation
Support all language constructs
     Inline function, template instantiation   
     
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/URW2tPtVuy7zxrNKJNxxezZ2lPw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/URW2tPtVuy7zxrNKJNxxezZ2lPw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/URW2tPtVuy7zxrNKJNxxezZ2lPw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/URW2tPtVuy7zxrNKJNxxezZ2lPw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VinceYuansBlog/~4/OB55iBYvtDc" height="1" width="1"/&gt;</content><feedburner:origLink>http://vinceyuan.blogspot.com/2011/04/wwdc-session313-llvm-technologies-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUMNQ3k5eSp7ImA9WhZQE0s.&quot;"><id>tag:blogger.com,1999:blog-9484269.post-6120523360144446022</id><published>2011-04-05T20:31:00.000+08:00</published><updated>2011-04-21T13:24:52.721+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-21T13:24:52.721+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Xcode4" /><category scheme="http://www.blogger.com/atom/ns#" term="WWDC2010" /><category scheme="http://www.blogger.com/atom/ns#" term="LearningNotes" /><category scheme="http://www.blogger.com/atom/ns#" term="LLVM" /><title>WWDC2010 Session312 What's New in the LLVM Compiler</title><link rel="replies" type="application/atom+xml" href="http://vinceyuan.blogspot.com/feeds/6120523360144446022/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9484269&amp;postID=6120523360144446022" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/6120523360144446022?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/6120523360144446022?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VinceYuansBlog/~3/9h6wsRp89LI/wwdc2010-session312-what-new-in-llvm.html" title="WWDC2010 Session312 What&amp;#39;s New in the LLVM Compiler" /><author><name>Vince Yuan</name><uri>http://www.blogger.com/profile/07268121275972731120</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://4.bp.blogspot.com/-6Wwm1UuOq44/Tlw888oGwJI/AAAAAAAAACM/5ZxWO4wtkp0/s220/VinceHead2.jpg" /></author><thr:total>0</thr:total><content type="html">LLVM stands for Low Level Virtual Machine which is a compiler infrastructure, written in C++. The LLVM project started in 2000 at the University of Illinois at Urbana-Champaign, under the direction of Vikram Adve and Chris Lattner. In late 2000, Lattner joined the University of Illinois at Urbana-Champaign as a research assistant and M.Sc. student. Lattner was hired by Apple in 2005.
Compiler 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/HKNY7DT0VOovO08omVXhIX1MvBU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HKNY7DT0VOovO08omVXhIX1MvBU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/HKNY7DT0VOovO08omVXhIX1MvBU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HKNY7DT0VOovO08omVXhIX1MvBU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VinceYuansBlog/~4/9h6wsRp89LI" height="1" width="1"/&gt;</content><feedburner:origLink>http://vinceyuan.blogspot.com/2011/04/wwdc2010-session312-what-new-in-llvm.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08GSHs4fCp7ImA9WhZSGUU.&quot;"><id>tag:blogger.com,1999:blog-9484269.post-5950994737917087171</id><published>2011-04-05T15:49:00.000+08:00</published><updated>2011-04-05T15:50:29.534+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-05T15:50:29.534+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Xcode4" /><category scheme="http://www.blogger.com/atom/ns#" term="WWDC2010" /><category scheme="http://www.blogger.com/atom/ns#" term="LearningNotes" /><title>WWDC2010 Session315 Using Interface Builder in Xcode 4</title><link rel="replies" type="application/atom+xml" href="http://vinceyuan.blogspot.com/feeds/5950994737917087171/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9484269&amp;postID=5950994737917087171" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/5950994737917087171?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9484269/posts/default/5950994737917087171?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VinceYuansBlog/~3/DC1U9trnKVk/wwdc2010-session315-using-interface.html" title="WWDC2010 Session315 Using Interface Builder in Xcode 4" /><author><name>Vince Yuan</name><uri>http://www.blogger.com/profile/07268121275972731120</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://4.bp.blogspot.com/-6Wwm1UuOq44/Tlw888oGwJI/AAAAAAAAACM/5ZxWO4wtkp0/s220/VinceHead2.jpg" /></author><thr:total>0</thr:total><content type="html">Interface Builder is integrated into Xcode 4.

All the window or views in a xib file will show in the design canvas not in a separate window any more.
There is a media library in the interface builder. You can preview and add a picture to your UI directly.
Select a control, press Option key, and move your mouse, you will see some useful annotations.
In Identity Inspector, there is a small arrow 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/HAtQJBk2-NiQMi-mfqWSuZ2rV-Y/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HAtQJBk2-NiQMi-mfqWSuZ2rV-Y/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/HAtQJBk2-NiQMi-mfqWSuZ2rV-Y/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HAtQJBk2-NiQMi-mfqWSuZ2rV-Y/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VinceYuansBlog/~4/DC1U9trnKVk" height="1" width="1"/&gt;</content><feedburner:origLink>http://vinceyuan.blogspot.com/2011/04/wwdc2010-session315-using-interface.html</feedburner:origLink></entry></feed>

