<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Elton&#039;s Blog &#187; Mac</title>
	<atom:link href="http://blog.prosight.me/index.php/category/mac/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.prosight.me</link>
	<description>移动开发，敏捷web开发，Linux服务器部署维护，web UI和UE设计，摄影</description>
	<lastBuildDate>Wed, 08 Feb 2012 00:22:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>使用rvm在Mac中安装ruby和rails</title>
		<link>http://blog.prosight.me/index.php/2011/09/805?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e4%25bd%25bf%25e7%2594%25a8rvm%25e5%259c%25a8mac%25e4%25b8%25ad%25e5%25ae%2589%25e8%25a3%2585ruby%25e5%2592%258crails</link>
		<comments>http://blog.prosight.me/index.php/2011/09/805#comments</comments>
		<pubDate>Fri, 09 Sep 2011 00:15:24 +0000</pubDate>
		<dc:creator>Elton</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://blog.prosight.me/?p=805</guid>
		<description><![CDATA[MacOS默认安装的是ruby 1.8.7，如果你想使用ruby 1.9.2的话，除了在官网下载源码编译安装外，可以使用rvm来协助安装。 STEP-1 安装RVM 在Terminal中输入以下命令即可安装 1 bash &#60; &#60;&#40;curl -s https://rvm.beginrescueend.com/install/rvm&#41; 为了可以在shell中使用，需要在.bash_profile中输入以下命令 1 2 3 4 5 cd ~/ sudo vim .bash_profile &#160; #在.bash_profile中加入 &#91;&#91; -s &#34;$HOME/.rvm/scripts/rvm&#34; &#93;&#93; &#38;amp;&#38;amp; source &#34;$HOME/.rvm/scripts/rvm&#34; # This loads RVM into a shell session. 之后退出Terminal，重启它。 STEP-2 安装Ruby 使用以下命令，可以看到rvm可以支持安装的内容 1 2 3 4 5 6 7 8 9 10 11 [...]]]></description>
		<wfw:commentRss>http://blog.prosight.me/index.php/2011/09/805/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>阻止iOS设备锁屏</title>
		<link>http://blog.prosight.me/index.php/2011/08/800?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e9%2598%25bb%25e6%25ad%25a2ios%25e8%25ae%25be%25e5%25a4%2587%25e9%2594%2581%25e5%25b1%258f</link>
		<comments>http://blog.prosight.me/index.php/2011/08/800#comments</comments>
		<pubDate>Mon, 22 Aug 2011 08:10:06 +0000</pubDate>
		<dc:creator>Elton</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iOS]]></category>

		<guid isPermaLink="false">http://blog.prosight.me/?p=800</guid>
		<description><![CDATA[默认，所有iOS设备在过了设定的休眠时间后，都会自动锁屏。 如果你的应用不希望iOS设备自动锁屏，可以使用以下方式来保持屏幕一直开着。 1 2 3 4 5 // Disable the idle timer &#91;&#91;UIApplication sharedApplication&#93; setIdleTimerDisabled: YES&#93;; &#160; // Or for those who prefer dot syntax: &#91;UIApplication sharedApplication&#93;.idleTimerDisabled = YES;]]></description>
		<wfw:commentRss>http://blog.prosight.me/index.php/2011/08/800/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>在XCode4中添加程序调试错误信息</title>
		<link>http://blog.prosight.me/index.php/2011/08/780?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e5%259c%25a8xcode4%25e4%25b8%25ad%25e6%25b7%25bb%25e5%258a%25a0%25e7%25a8%258b%25e5%25ba%258f%25e8%25b0%2583%25e8%25af%2595%25e9%2594%2599%25e8%25af%25af%25e4%25bf%25a1%25e6%2581%25af</link>
		<comments>http://blog.prosight.me/index.php/2011/08/780#comments</comments>
		<pubDate>Sat, 06 Aug 2011 23:12:37 +0000</pubDate>
		<dc:creator>Elton</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[xcode]]></category>

		<guid isPermaLink="false">http://blog.prosight.me/?p=780</guid>
		<description><![CDATA[当调试程序时，程序突然崩溃，默认条件下，XCode反馈的信息不够多。可以通过以下方式让XCode反馈足够多的信息。 在Edit&#8211;>Scheme里面 找到Arguments 把下面3个值设置成YES 1 2 3 NSAutoreleaseFreedObjectCheckEnabled NSZombieEnabled NSDebugEnabled 这种方法非常好用，建议在建立一个工程的时候，加入此设置。]]></description>
		<wfw:commentRss>http://blog.prosight.me/index.php/2011/08/780/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>整合cocos2d API文档到XCode中</title>
		<link>http://blog.prosight.me/index.php/2010/12/672?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e6%2595%25b4%25e5%2590%2588cocos2d-api%25e6%2596%2587%25e6%25a1%25a3%25e5%2588%25b0xcode%25e4%25b8%25ad</link>
		<comments>http://blog.prosight.me/index.php/2010/12/672#comments</comments>
		<pubDate>Sun, 12 Dec 2010 06:44:54 +0000</pubDate>
		<dc:creator>Elton</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[cocos2d]]></category>
		<category><![CDATA[xcode]]></category>

		<guid isPermaLink="false">http://blog.prosight.me/?p=672</guid>
		<description><![CDATA[cocos2d是经常使用的iOS游戏引擎，在编写代码的时候，经常需要参考它的API文档，本文主要介绍如何将cocos2d的文档整合到XCode中。 安装doxygen 从这里下载 http://www.stack.nl/~dimitri/doxygen/download.html#latestsrc DMG安装包。 然后点击安装即可。 安装Graphviz 从这里下载http://www.ryandesign.com/graphviz/ 然后点击安装。安装文件会安装到/usr/local/graphviz-x.y/bin目录中。 设置doxygen 修改doxygen.config文件，将HAVE_DOT设置成YES，将DOT_PATH设置成/usr/local/graphviz-x.y/bin 选择cocos2d-documentation target 打开 cocos2d-iphone的xcode项目工程 选择 “cocos2d-documentation” target XCode -> Project -> Set Active Target -> cocos2d-documentation 生成项目 像生成其他项目一样生成此项目 XCode -> Build -> Build 之后就可以在文档中查看cocos2d文档了。]]></description>
		<wfw:commentRss>http://blog.prosight.me/index.php/2010/12/672/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用Objective-C建立UUID</title>
		<link>http://blog.prosight.me/index.php/2010/11/670?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e4%25bd%25bf%25e7%2594%25a8objective-c%25e5%25bb%25ba%25e7%25ab%258buuid</link>
		<comments>http://blog.prosight.me/index.php/2010/11/670#comments</comments>
		<pubDate>Mon, 29 Nov 2010 05:21:02 +0000</pubDate>
		<dc:creator>Elton</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[UUID]]></category>

		<guid isPermaLink="false">http://blog.prosight.me/?p=670</guid>
		<description><![CDATA[UUID是128位的值，它可以保证唯一性。通常，它是由机器本身网卡的MAC地址和当前系统时间来生成的。 UUID是由中划线连接而成的字符串。例如：13222F23-C76A-7781-0C12-0293E3B34398. 下面这个方法可以生成UUID并以字符串的方式进行返回。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 - &#40;NSString *&#41;createUUID &#123; // Create universally unique identifier (object) CFUUIDRef uuidObject = CFUUIDCreate&#40;kCFAllocatorDefault&#41;; &#160; // Get the string representation of CFUUID object. NSString *uuidStr = &#40;NSString *&#41;CFUUIDCreateString&#40;kCFAllocatorDefault, uuidObject&#41;; &#160; // [...]]]></description>
		<wfw:commentRss>http://blog.prosight.me/index.php/2010/11/670/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>给iPhone添加splash页面又一法</title>
		<link>http://blog.prosight.me/index.php/2010/10/667?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e7%25bb%2599iphone%25e6%25b7%25bb%25e5%258a%25a0splash%25e9%25a1%25b5%25e9%259d%25a2%25e5%258f%2588%25e4%25b8%2580%25e6%25b3%2595</link>
		<comments>http://blog.prosight.me/index.php/2010/10/667#comments</comments>
		<pubDate>Mon, 25 Oct 2010 03:40:21 +0000</pubDate>
		<dc:creator>Elton</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[splash]]></category>

		<guid isPermaLink="false">http://blog.prosight.me/?p=667</guid>
		<description><![CDATA[之前有发过一篇文章，介绍了如何添加splash页面。 现在发现有一个更简单的方法。 1. 将你需要的splash界面的图片，存成Default.png 2. 在XXXAppDelegate.m程序中，插入如下代码： 1 2 3 4 5 6 7 8 9 10 11 12 - &#40;BOOL&#41;application:&#40;UIApplication *&#41;application didFinishLaunchingWithOptions:&#40;NSDictionary *&#41;launchOptions &#123; //--insert a delay of 5 seconds before the splash screen disappears-- &#91;NSThread sleepForTimeInterval:5.0&#93;; // Override point for customization after application launch. // Add the view controller’s view to the window and [...]]]></description>
		<wfw:commentRss>http://blog.prosight.me/index.php/2010/10/667/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>在Mac OSX下安装和使用GO语言</title>
		<link>http://blog.prosight.me/index.php/2010/08/655?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e5%259c%25a8mac-osx%25e4%25b8%258b%25e5%25ae%2589%25e8%25a3%2585%25e5%2592%258c%25e4%25bd%25bf%25e7%2594%25a8go%25e8%25af%25ad%25e8%25a8%2580</link>
		<comments>http://blog.prosight.me/index.php/2010/08/655#comments</comments>
		<pubDate>Fri, 13 Aug 2010 06:36:13 +0000</pubDate>
		<dc:creator>Elton</dc:creator>
				<category><![CDATA[Agile Web Development]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[GO]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[OSX]]></category>

		<guid isPermaLink="false">http://blog.prosight.me/?p=655</guid>
		<description><![CDATA[Go语言是Google新推出的结合了动态语言和静态语言优势的一个新兴的语言。下面介绍一下如何在Mac系统下安装和使用这个语言。 设置环境变量 $GOROOT GO语言的根目录，通常是$HOME/go，当然也可以是任何其他目录。 $GOOS 和 $GOARCH 标明GO语言所在的系统和处理器类型。$GOOS可以是linux, freebsd, darwin (Mac OS X 10.5 or 10.6)和 nacl (Native Client, an incomplete port)。$GOARCH可以是amd64 (64-bit x86, the most mature port), 386 (32-bit x86), arm (32-bit ARM, an incomplete port)。 你可以在你的shell profile中设置这些变量，我是放在了~/.bash_profile里了。 1 2 3 4 export GOROOT=$HOME/go export GOARCH=amd64 export GOOS=darwin export PATH=$PATH:$GOROOT/bin 其中， $GOROOT/bin是GO默认的可执行文件的目录，加入到path中方便使用go的各种命令。 再执行 1 [...]]]></description>
		<wfw:commentRss>http://blog.prosight.me/index.php/2010/08/655/feed</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>iPhone/Mac Objective-C内存管理教程和原理剖析(四)系统自动创建新的autorelease pool</title>
		<link>http://blog.prosight.me/index.php/2010/07/633?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=iphonemac-objective-c%25e5%2586%2585%25e5%25ad%2598%25e7%25ae%25a1%25e7%2590%2586%25e6%2595%2599%25e7%25a8%258b%25e5%2592%258c%25e5%258e%259f%25e7%2590%2586%25e5%2589%2596%25e6%259e%2590%25e5%259b%259b%25e7%25b3%25bb%25e7%25bb%259f%25e8%2587%25aa%25e5%258a%25a8%25e5%2588%259b%25e5%25bb%25ba%25e6%2596%25b0</link>
		<comments>http://blog.prosight.me/index.php/2010/07/633#comments</comments>
		<pubDate>Thu, 29 Jul 2010 06:37:43 +0000</pubDate>
		<dc:creator>Elton</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[内存管理]]></category>

		<guid isPermaLink="false">http://blog.prosight.me/?p=633</guid>
		<description><![CDATA[四 系统自动创建新的autorelease pool 在生成新的Run Loop的时候，系统会自动创建新的autorelease pool（非常感谢网友hhyytt和neogui的提醒）。注意，此处不同于xcode在新建项目时自动生成的代码中加入的autorelease pool，xcode生成的代码可以被删除，但系统自动创建的新的autorelease pool是无法删除的（对于无Garbage Collection的环境来说）。Objective-C没有给出实现代码，官方文档也没有说明，但我们可以通过小程序来证明。 在这个小程序中，我们先生成了一个autorelease pool，然后生成一个autorelease的ClassA的实例，再在一个新的run loop中生成一个autorelease的ClassB的对象（注意，我们并没有手动在新run loop中生成autorelease pool）。精简的示例代码如下，详细代码请见附件中的memman-run-loop-with-pool.m。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 int main&#40;int argc, char**argv&#41; &#123; NSLog&#40;@&#34;create an autorelasePooln&#34;&#41;; NSAutoreleasePool *pool = &#91;&#91;NSAutoreleasePool alloc&#93; init&#93;; &#160; NSLog&#40;@&#34;create [...]]]></description>
		<wfw:commentRss>http://blog.prosight.me/index.php/2010/07/633/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>iPhone/Mac Objective-C内存管理教程和原理剖析(三)@property (retain)和@synthesize的默认实现</title>
		<link>http://blog.prosight.me/index.php/2010/07/630?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=iphonemac-objective-c%25e5%2586%2585%25e5%25ad%2598%25e7%25ae%25a1%25e7%2590%2586%25e6%2595%2599%25e7%25a8%258b%25e5%2592%258c%25e5%258e%259f%25e7%2590%2586%25e5%2589%2596%25e6%259e%2590%25e4%25b8%2589property-retain%25e5%2592%258csynthesize%25e7%259a%2584%25e9%25bb%2598%25e8%25ae%25a4</link>
		<comments>http://blog.prosight.me/index.php/2010/07/630#comments</comments>
		<pubDate>Thu, 29 Jul 2010 06:29:50 +0000</pubDate>
		<dc:creator>Elton</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[内存管理]]></category>

		<guid isPermaLink="false">http://blog.prosight.me/?p=630</guid>
		<description><![CDATA[三 @property (retain)和@synthesize的默认实现 在这里解释一下@property (retain) ClassB* objB;和@synthesize objB;背后到底发生了什么(retain property的默认实现)。property实际上是getter和setter，针对有retain参数的property，背后的实现如下（请参考附件中的memman-getter-setter.m，你会发现，结果和memman-property.m一样）： 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 @interface ClassA : NSObject &#123; ClassB *objB; &#125; &#160; -&#40;ClassB *&#41; getObjB; -&#40;void&#41; setObjB:&#40;ClassB *&#41; value; @end &#160; @implementation ClassA -&#40;ClassB*&#41; getObjB &#123; [...]]]></description>
		<wfw:commentRss>http://blog.prosight.me/index.php/2010/07/630/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone/Mac Objective-C内存管理教程和原理剖析(二)口诀与范式</title>
		<link>http://blog.prosight.me/index.php/2010/07/628?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=iphonemac-objective-c%25e5%2586%2585%25e5%25ad%2598%25e7%25ae%25a1%25e7%2590%2586%25e6%2595%2599%25e7%25a8%258b%25e5%2592%258c%25e5%258e%259f%25e7%2590%2586%25e5%2589%2596%25e6%259e%2590%25e4%25ba%258c%25e5%258f%25a3%25e8%25af%2580%25e4%25b8%258e%25e8%258c%2583%25e5%25bc%258f</link>
		<comments>http://blog.prosight.me/index.php/2010/07/628#comments</comments>
		<pubDate>Thu, 29 Jul 2010 03:38:19 +0000</pubDate>
		<dc:creator>Elton</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[内存管理]]></category>

		<guid isPermaLink="false">http://blog.prosight.me/?p=628</guid>
		<description><![CDATA[二 口诀与范式 1 口诀。 1.1 谁创建，谁释放（类似于“谁污染，谁治理”）。如果你通过alloc、new或copy来创建一个对象，那么你必须调用release或autorelease。换句话说，不是你创建的，就不用你去释放。 例如，你在一个函数中alloc生成了一个对象，且这个对象只在这个函数中被使用，那么你必须在这个函数中调用release或autorelease。如果你在一个class的某个方法中alloc一个成员对象，且没有调用autorelease，那么你需要在这个类的dealloc方法中调用release；如果调用了autorelease，那么在dealloc方法中什么都不需要做。 1.2 除了alloc、new或copy之外的方法创建的对象都被声明了autorelease。 1.3 谁retain，谁release。只要你调用了retain，无论这个对象是如何生成的，你都要调用release。有时候你的代码中明明没有retain，可是系统会在默认实现中加入retain。不知道为什么苹果公司的文档没有强调这个非常重要的一点，请参考范式2.7和第三章。 2 范式。 范式就是模板，就是依葫芦画瓢。由于不同人有不同的理解和习惯，我总结的范式不一定适合所有人，但我能保证照着这样做不会出问题。 2.1 创建一个对象。 1 ClassA *obj1 = &#91;&#91;ClassA alloc&#93; init&#93;; 2.2 创建一个autorelease的对象。 1 ClassA *obj1 = &#91;&#91;&#91;ClassA alloc&#93; init&#93; autorelease&#93;; 2.3 Release一个对象后，立即把指针清空。（顺便说一句，release一个空指针是合法的，但不会发生任何事情） 1 2 &#91;obj1 release&#93;; obj1 = nil; 2.4 指针赋值给另一个指针。 1 2 3 4 5 ClassA *obj2 = obj1; &#91;obj2 retain&#93;; [...]]]></description>
		<wfw:commentRss>http://blog.prosight.me/index.php/2010/07/628/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

