<?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>roobasoft blog &#187; Cocoa</title>
	<atom:link href="http://roobasoft.com/blog/category/cocoa/feed/" rel="self" type="application/rss+xml" />
	<link>http://roobasoft.com/blog</link>
	<description></description>
	<lastBuildDate>Sun, 15 Apr 2012 17:02:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>RooAlertView</title>
		<link>http://roobasoft.com/blog/2011/11/18/rooalertview/</link>
		<comments>http://roobasoft.com/blog/2011/11/18/rooalertview/#comments</comments>
		<pubDate>Fri, 18 Nov 2011 14:31:20 +0000</pubDate>
		<dc:creator>BrianC</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://roobasoft.com/blog/?p=234</guid>
		<description><![CDATA[On the twitters, friend Justin Driscoll mentioned: iOS needs a block-based UIAlertView. So many currently-delegate based interfaces would be better served by block callbacks. I&#8217;ve wanted the same. I&#8217;ve also wanted to contribute more open source code. With some time on my hands, I threw together RooAlertView. As I mention in the README, I&#8217;m not [...]]]></description>
			<content:encoded><![CDATA[<p>On the twitters, friend <a href="http://twitter.com/jdriscoll">Justin Driscoll</a> <a href="https://twitter.com/#!/jdriscoll/status/137513067033526272">mentioned</a>:</p>

<blockquote>
  <p>iOS needs a block-based UIAlertView. So many currently-delegate based interfaces would be better served by block callbacks.</p>
</blockquote>

<p>I&#8217;ve wanted the same. I&#8217;ve also wanted to contribute more open source code. With some time on my hands, I threw together <a href="https://github.com/bricooke/RooAlertView">RooAlertView</a>.</p>

<p>As I mention in the README, I&#8217;m not terribly happy with it. I like the public interface, a single class method. But am sad to report that the static analyzer doesn&#8217;t like the implementation. The static method alloc, init&#8217;s a RooAlertView and then relies on the UIAlertViewDelegate&#8217;s callback to be called and then releases itself. I&#8217;m fairly confident it works and all, but am hopeful someone will provide a better solution that the analyzer likes and that&#8217;s probably cleaner.</p>
]]></content:encoded>
			<wfw:commentRss>http://roobasoft.com/blog/2011/11/18/rooalertview/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Time Out Your Beta App X Days From When it was Built</title>
		<link>http://roobasoft.com/blog/2006/06/09/time-out-your-beta-app-x-days-from-when-it-was-built/</link>
		<comments>http://roobasoft.com/blog/2006/06/09/time-out-your-beta-app-x-days-from-when-it-was-built/#comments</comments>
		<pubDate>Fri, 09 Jun 2006 17:52:17 +0000</pubDate>
		<dc:creator>BrianC</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://roobasoft.com/blog/2006/06/09/time-out-your-beta-app-x-days-from-when-it-was-built/</guid>
		<description><![CDATA[I&#8217;m working on an application that will be going into a private beta pretty soon, followed by a public beta. One of the things I wanted to do was make sure the application stopped working after 30 days from when it was built. This is to make sure the beta testers are running the latest [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m working on an application that will be going into a private beta pretty soon, followed by a public beta. One of the things I wanted to do was make sure the application stopped working after 30 days from when it was built. This is to make sure the beta testers are running the latest and greatest version.</p>

<p>So to avoid having to manually update the date every time I release a new beta, I used gcc&#8217;s &#95;&#95;DATE&#95;&#95; to come up with the following code:</p>

<p><pre class="code"><br />
    NSDate <em>expirationDate = 
        [[NSDate dateWithNaturalLanguageString:
            [NSString stringWithCString:<strong>DATE</strong>]] 
            addTimeInterval:(60</em>60<em>24</em>30/<em>30 days</em>/)];</pre></p>

<pre><code>if( [expirationDate earlierDate:[NSDate date]] 
     == expirationDate )
{
    int result = NSRunAlertPanel(@"Beta Expired", 
                 @"This beta has expired, please visit "
                 "http://roobasoft.com/rooAppNumber2 to grab"
                 "the latest version.", 
                 @"Take Me There", @"Exit", nil);

    if( result == NSAlertDefaultReturn )
    {
        [[NSWorkspace sharedWorkspace] openURL:
                  [NSURL URLWithString:
                   @"http://roobasoft.com/rooAppNumber2"]];
    }
    [[NSApplication sharedApplication] terminate:self];
}
</code></pre>

<p></p>

<p>Make sure the file that contains this code is always compiled before you ship your beta. Otherwise the <strong>DATE</strong> referenced will be whenever the file containing it was compiled. This works for me because I keep a separate â€œproductionâ€ sandbox where a clean build is run before handing anything out.</p>

<p>Want to get fancy? Use <a href="http://toxicsoftware.com/blog/are_you_feeling_a_little_hyper_alert">Hyper Alert</a> to make the URL clickable or to pretty it up a bit. You could probably have it pull release notes for the current release from a pre-defined location (that&#8217;s an assumption &#8211; I haven&#8217; tried this).</p>

<p><a href="http://www.cocoadev.com/index.pl?SetADateForAnAppToExpire">SetADateForAnAppToExpire</a> on CocoaDev wiki has some more information. Enjoy!.</p>

<p>p.s. If for some reason you&#8217;re interested in participating in a private beta of â€œrooAppNumber2â€ without knowing anything about it, send a note to <a href="mailto:rooAppNumber2@roobasoft.com">rooAppNumber2@roobasoft.com</a>  I&#8217;ll make sure you get notified on how to participate when it&#8217;s ready. rooAppNumber2 will require OS X 10.4.</p>
]]></content:encoded>
			<wfw:commentRss>http://roobasoft.com/blog/2006/06/09/time-out-your-beta-app-x-days-from-when-it-was-built/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mistakes I Made Using Bindings Without Core Data</title>
		<link>http://roobasoft.com/blog/2006/06/07/mistakes-i-made-using-bindings-without-core-data-2/</link>
		<comments>http://roobasoft.com/blog/2006/06/07/mistakes-i-made-using-bindings-without-core-data-2/#comments</comments>
		<pubDate>Wed, 07 Jun 2006 13:24:33 +0000</pubDate>
		<dc:creator>BrianC</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://roobasoft.com/blog/2006/06/07/mistakes-i-made-using-bindings-without-core-data-2/</guid>
		<description><![CDATA[Key-Value Coding is part of the magic behind Cocoa&#8217;s bindings. Up until yesterday I had only been binding to an ObjectController or to an ArrayController backed by Core Data. This is very powerful, but bindings pre-date Core Data so clearly not a necessity. So yesterday I went to bind an NSProgressIndicator&#8217;s &#8216;isIndeteriminate&#8217; to a BOOL. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://developer.apple.com/documentation/Cocoa/Conceptual/KeyValueCoding/Concepts/BasicPrinciples.html">Key-Value Coding</a> is part of the magic behind Cocoa&#8217;s <a href="http://developer.apple.com/documentation/Cocoa/Conceptual/CocoaBindings/CocoaBindings.html">bindings</a>. Up until yesterday I had only been binding to an ObjectController or to an ArrayController backed by Core Data. This is very powerful, but bindings pre-date Core Data so clearly not a necessity. So yesterday I went to bind an NSProgressIndicator&#8217;s &#8216;isIndeteriminate&#8217; to a BOOL. Two gotchas that I ran into that I can see myself running into again:</p>

<p>1) <b>update 6.7.06</b>: there is no #1 &#8211; I just had this blatantly wrong &#8211; see comments. Thanks Jean-Francois.</p>

<p>&lt;</p>

<p>p>
<strike>Binding to a BOOL requires the result to be returned in an NSNumber. My isIndeterminate method, although backed by a simple BOOL, needed to be
<pre class="code">- (NSNumber <em>) isIndeterminate
{
return [NSNumber numberWithBool:isIndeterminate];
}</em></pre></strike>
2) Bindings require you to notify them when you change the value (see, it&#8217;s not *all magic). So setIsIndeterminate looks like this:
<pre class="code">- (void)setIsIndeteriminate:(NSNumber *)flag
{
[self willChangeValueForKey:@â€œisIndeteriminateâ€];
isIndeteriminate = [flag boolValue];
[self didChangeValueForKey:@â€œisIndeteriminateâ€];
}</pre>
Without this, changing the isIndeterminate member variable would have no effect.</p>

<p>Some other goodies:</p>

<ul>
    <li><a href="http://www.kevincallahan.org/software/accessorizer.html">Accessorizer</a> can create your accessor methods for you. This is a great tool that greatly speeds up a tedious task.</li>
</ul>

<ul>
    <li><a onclick="window.open('http://roobasoft.com/blog/wp-content/uploads/coredata_menu.png','popup','width=427,height=74,scrollbars=no,resizable=yes,toolbar=no,directories=no,location=no,menubar=no,status=yes,left=0,top=0');return false" href="http://roobasoft.com/blog/wp-content/uploads/coredata_menu.png"><img width="288" vspace="4" hspace="4" height="50" border="0" align="right" alt="Coredata Menu" src="http://roobasoft.com/blog/wp-content/uploads/coredata_menu-tm.jpg" /></a>Core Data can generate similar code for you. Go to your data model and right click on an entities attribute. You should see a â€œCopy Method Declarations to Clipboardâ€ and a â€œCopy Method Implementations to Clipboardâ€. Core Data doesn&#8217;t need you to generate these. If you use the setValue:foo forKey:@â€œbarâ€ syntax the correct things happen. However, it&#8217;s often nice to just say [obj setBar:foo];</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://roobasoft.com/blog/2006/06/07/mistakes-i-made-using-bindings-without-core-data-2/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Getting Default Application Icon as NSImage</title>
		<link>http://roobasoft.com/blog/2006/05/31/getting-default-application-icon-as-nsimage/</link>
		<comments>http://roobasoft.com/blog/2006/05/31/getting-default-application-icon-as-nsimage/#comments</comments>
		<pubDate>Wed, 31 May 2006 05:15:43 +0000</pubDate>
		<dc:creator>BrianC</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Commentary]]></category>

		<guid isPermaLink="false">http://roobasoft.com/blog/2006/05/31/getting-default-application-icon-as-nsimage/</guid>
		<description><![CDATA[To get the icon that represents an application with no custom icon (default application icon) just call: [NSImage imageNamed:@â€œNSDefaultApplicationIconâ€];]]></description>
			<content:encoded><![CDATA[<p>To get the icon that represents an application with no custom icon (default application icon) just call:
<pre class="code">[NSImage imageNamed:@â€œNSDefaultApplicationIconâ€];
</pre></p>
]]></content:encoded>
			<wfw:commentRss>http://roobasoft.com/blog/2006/05/31/getting-default-application-icon-as-nsimage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>You Can Pass &#8216;NO&#8217; as a NSNumber, But You Probably Don&#8217;t Want To</title>
		<link>http://roobasoft.com/blog/2006/05/30/you-can-pass-no-as-a-nsnumber-but-you-probably-dont-want-to/</link>
		<comments>http://roobasoft.com/blog/2006/05/30/you-can-pass-no-as-a-nsnumber-but-you-probably-dont-want-to/#comments</comments>
		<pubDate>Tue, 30 May 2006 07:22:50 +0000</pubDate>
		<dc:creator>BrianC</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://roobasoft.com/blog/2006/05/30/you-can-pass-no-as-a-nsnumber-but-you-probably-dont-want-to/</guid>
		<description><![CDATA[When using Core Data, Boolean values as an attribute are represented using NSNumber. That&#8217;s all fine and good, but it requires you to use [NSNumber numberWithBool:YES&#124;NO] when you set the value. NO is defined as: define NO (BOOL)0 we have an issue. 0 is also &#8216;nil&#8217;. Just below the definition of NO we see nil: [...]]]></description>
			<content:encoded><![CDATA[<p>When using Core Data, Boolean values as an attribute are represented using NSNumber. That&#8217;s all fine and good, but it requires you to use [NSNumber numberWithBool:YES|NO] when you set the value.</p>

<p>NO is defined as:</p>

<p><pre class="code"></pre></p>

<h1>define NO              (BOOL)0</h1>

<p></p>

<p>we have an issue. 0 is also &#8216;nil&#8217;. Just below the definition of NO we see nil:</p>

<p><pre class="code"></pre></p>

<h1>define nil 0       /* id of Nil instance */</h1>

<p></p>

<p>Since &#8216;nil&#8217; has to be a valid NSNumber *, you are allowed to pass NO as a NSNumber * parameter. If object &#8216;foo&#8217; has a method &#8216;setBarOn&#8217; with a declaration of 
<pre class="code">
- (void) setBarOn:(NSNumber *)aBooleanAsANumber;
- (NSNumber *) barOn;
</pre></p>

<p>You need to make sure you never call that method with NO, as in:</p>

<p><pre class="code">
[foo setBarOn:NO]; 
</pre></p>

<p>If you were to try to read the boolValue by hand you&#8217;d be <em>OK</em>. Calling &#8216;boolValue&#8217; on a nil object seems to return 0, which is NO, so you wouldn&#8217;t notice the problem. The problem comes in when you use predicates.</p>

<p>I had a predicate that looked like:</p>

<p><pre>
â€œisBarOn == 0â€
</pre></p>

<p>If you setBarOn:NO instead of setBarOn:[NSNumber numberWithBool:NO] the instance in question will not be returned by this predicate. Ouch. Fortunately if you were to look at the attribute that had been set to :NO you&#8217;ll see it reported as (null), which is a good hint your Boolean got set wrong.</p>

<p>I&#8217;m not sure how common this is or not, but it seemed worthy of pointing out. Hopefully it made some sense to someone.</p>
]]></content:encoded>
			<wfw:commentRss>http://roobasoft.com/blog/2006/05/30/you-can-pass-no-as-a-nsnumber-but-you-probably-dont-want-to/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Secret Core Data Reserved Keywords</title>
		<link>http://roobasoft.com/blog/2006/04/25/secret-core-data-reserved-keywords/</link>
		<comments>http://roobasoft.com/blog/2006/04/25/secret-core-data-reserved-keywords/#comments</comments>
		<pubDate>Tue, 25 Apr 2006 20:23:30 +0000</pubDate>
		<dc:creator>BrianC</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Commentary]]></category>
		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://roobasoft.com/blog/2006/04/25/secret-core-data-reserved-keywords/</guid>
		<description><![CDATA[Somewhere there exists a list of words you shouldn&#8217;t assign as attributes within Core Data. I don&#8217;t know where that list is, and today I got bit by not knowing. I tried to use the word &#8220;deleted&#8221; as an attribute. No matter how hard I tried to set the &#8220;deleted&#8221; value and regardless of what [...]]]></description>
			<content:encoded><![CDATA[<p>Somewhere there exists a list of words you shouldn&#8217;t assign as attributes within Core Data.  I don&#8217;t know where that list is, and today I got bit by not knowing.  I tried to use the word &#8220;deleted&#8221; as an attribute.  No matter how hard I tried to set the &#8220;deleted&#8221; value and regardless of what I saw in the XML, querying &#8220;deleted&#8221; returned NO.  Actually, that&#8217;s an interesting point.  I was able to setValue: &#8220;deleted&#8221; but not &#8220;valueForKey:&#8221; it.  Odd.</p>

<p>The other funny thing about this is that if you try to use the name &#8220;isDeleted&#8221;, Xcode squawks up and makes it clear that &#8220;isDeleted&#8221; is a no no.  See image of squawking:</p>

<p><img src="http://roobasoft.com/blog/wp-content/uploads/xcodeSqwuak.png" height="162" width="429" border="0" align="middle" hspace="4" vspace="4" alt="Xcodesqwuak" />
I settled on &#8220;isProfileDeleted&#8221;.  Redundant, but it works a heck of a lot better now (reads and writes!).  Why the &#8220;name clash&#8221; code in Xcode isn&#8217;t catching &#8220;deleted&#8221; I don&#8217;t know.</p>

<p>I did some searching and couldn&#8217;t find a list of reserved words.  If you know of one, please share.</p>
]]></content:encoded>
			<wfw:commentRss>http://roobasoft.com/blog/2006/04/25/secret-core-data-reserved-keywords/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[NSString propertyList]</title>
		<link>http://roobasoft.com/blog/2006/03/27/nsstring-propertylist/</link>
		<comments>http://roobasoft.com/blog/2006/03/27/nsstring-propertylist/#comments</comments>
		<pubDate>Mon, 27 Mar 2006 08:44:22 +0000</pubDate>
		<dc:creator>BrianC</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Commentary]]></category>
		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://roobasoft.com/blog/2006/03/27/nsstring-propertylist/</guid>
		<description><![CDATA[NSString has a great little method prototyped as - (id)propertyList What does it do? To quote the docs: Parses the receiver as a text representation of a property list, returning an NSString, NSData, NSArray, or NSDictionary object, according to the topmost element. If you started staring at CFPropertyList(&#8230;) functions, just trying to figure out how [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://roobasoft.com/blog/wp-content/uploads//plisthover.png" border="1" height="67" width="197" alt="plisthover.png" align="right" />NSString has a great little method prototyped as</p>

<p></p>

<p><pre class="code">
- (id)propertyList
</pre></p>

<p>What does it do?  To quote the docs:</p>

<blockquote>
Parses the receiver as a text representation of a property list, returning an NSString, NSData, NSArray, or NSDictionary object, according to the topmost element.
</blockquote>

<p>If you started staring at CFPropertyList(&#8230;) functions, just trying to figure out how to read a plist file, the &#8216;propertyList&#8217; method of NSString is tums for your heart burn.</p>

<p>Also, I&#8217;m loving the developer doc&#8217;s new &#8220;hover over a method to see the short description&#8221; as pictured above.  If you don&#8217;t see this, grab the March ADC Reference Library Update.</p>
]]></content:encoded>
			<wfw:commentRss>http://roobasoft.com/blog/2006/03/27/nsstring-propertylist/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stumbling into Solutions</title>
		<link>http://roobasoft.com/blog/2006/03/20/stumbling-into-solutions/</link>
		<comments>http://roobasoft.com/blog/2006/03/20/stumbling-into-solutions/#comments</comments>
		<pubDate>Mon, 20 Mar 2006 09:10:19 +0000</pubDate>
		<dc:creator>BrianC</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[roobasoft]]></category>
		<category><![CDATA[rooVid]]></category>

		<guid isPermaLink="false">http://roobasoft.com/blog/2006/03/20/stumbling-into-solutions/</guid>
		<description><![CDATA[I&#8217;m in debt to a lot of people for their help with rooVid. For some, the help was directly pointed at rooVid via questions I asked or suggestions made. For countless others it was via the wonderful blessing that is the web. One of the things I get a kick out of is when I [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m in debt to a lot of people for their help with <a href="http://roobasoft.com/rooVid">rooVid</a>.  For <a href="http://luisdelarosa.com">some</a>, the help was directly pointed at rooVid via questions I asked or suggestions made.  For <a href="http://cocoadev.com">countless</a> <a href="http://cocoabuilder.com">others</a> it was via the wonderful blessing that is the web.  One of the things I get a kick out of is when I just wander into a solution to a problem I&#8217;m not actively working on, yet I know I need help with.  This morning was one of those times.</p>

<p>I want to add a progress bar to rooVid&#8217;s dock icon.  This one progress bar would be the aggregate of all the running tasks.  How does one add a progress bar to their dock icon?  I don&#8217;t know, but I&#8217;ve known for a couple months that I wanted to do it.  My best lead was <a href="http://blog.oofn.net/">Chad Weider</a>&#8216;s <a href="http://blog.oofn.net/2006/01/08/badging-for-everyone/">CTBadge</a>.  The plan was to look at Chad&#8217;s sources and learn how to draw a progress bar.  Well, today I found a solution that should be quite easy to implement (I&#8217;ve already created a proof of concept app in almost no time).  The solution is <a href="http://www.zathras.de/angelweb/home.htm">Uli Kusterer</a>&#8216;s <a href="http://www.zathras.de/angelweb/sourcecode.htm#UKDockProgressIndicator">UKDockProgressIndicator</a>.  The funny, it&#8217;s a small world, thing here is that Uli Kusterer <a href="http://roobasoft.com/blog/2006/02/15/sparkle/#comments">commented</a> on my <a href="http://roobasoft.com/blog/2006/02/15/sparkle/#comments">Sparkle</a> post over a month ago.  But that&#8217;s not how I stumbled into UKDockProgressIndicator.  I stumbled into it via:</p>

<ul>
<li><a href="http://www.andymatuschak.org/">Andy Matuschak</a> posts about <a href="http://www.andymatuschak.org/articles/2006/03/19/sparkle-1-0-beta-2">Sparkle Beta 2</a> and NNW picks it up</li>
<li>In the comments of that post, Andy mentions Uli&#8217;s app called <a href="http://www.zathras.de/angelweb/macapplications.htm">Shovel</a>, and how it might be gaining support for Sparkle&#8217;d applications soon.  However, Andy does not provide a link to shovel.</li>
<li>Google &#8220;Shovel OS X&#8221;</li>
<li>Find link to Uli&#8217;s site via Softpedia</li>
<li>Poke around on Uli&#8217;s site a bit and bump into a <a href="http://www.zathras.de/angelweb/blog.htm">blog</a> <a href="http://www.zathras.de/angelweb/blog-ukxattrmetadatastorage-oh-one-and-more.htm">entry</a> about UKDockProgressIndicator</li>
</ul>

<p>This wandering into solutions happens enough that it&#8217;s one the first things I do when I can&#8217;t figure out how to tackle a problem.  To many, that&#8217;ll sound like procrastination, and, well, it is.  But nonetheless, it&#8217;s effective.  Can&#8217;t argue with the results.</p>

<p><strong>update:  </strong>As I was driving to work I felt I needed to update this entry with this addition.  Here goes:  As a religious man, I&#8217;d be stupid to think that all this &#8220;stumbling&#8221; was really just random luck.  Yet, going into any detail on my religious beliefs is not the focus of this blog.  So we&#8217;ll just leave it at this:  Yes, some of it may just be random stumbling (if you look around enough, you&#8217;re bound to find an answer to something), however it&#8217;s important for me to acknowledge that (according to me) there is something greater going on and I need to remember that and give thanks.  There, I feel a <em>little</em> better now.</p>
]]></content:encoded>
			<wfw:commentRss>http://roobasoft.com/blog/2006/03/20/stumbling-into-solutions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sparkle</title>
		<link>http://roobasoft.com/blog/2006/02/15/sparkle/</link>
		<comments>http://roobasoft.com/blog/2006/02/15/sparkle/#comments</comments>
		<pubDate>Wed, 15 Feb 2006 10:23:13 +0000</pubDate>
		<dc:creator>BrianC</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[roobasoft]]></category>
		<category><![CDATA[rooVid]]></category>

		<guid isPermaLink="false">http://roobasoft.com/blog/2006/02/15/sparkle/</guid>
		<description><![CDATA[Appcasting seems like a great idea to me. In short, an appcast is an RSS feed with an enclosure that is your latest release. I was turned on to appcasting when I found out about Sparkle. Sparkle made it super easy for me to add &#8220;check for update&#8230;&#8221; support to rooVid (it&#8217;ll be in beta [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://connectedflow.com/appcasting/">Appcasting</a> seems like a great idea to me.  In short, an appcast is an RSS feed with an enclosure that is your latest release.  I was turned on to appcasting when I found out about <a href="http://andymatuschak.org/articles/2006/02/05/sparkle-1-0-beta-1">Sparkle</a>.  Sparkle made it super easy for me to add &#8220;check for update&#8230;&#8221; support to <a href="http://roobasoft.com/rooVid">rooVid</a> (it&#8217;ll be in beta 2).  Sparkle pings your appcast feed to check for updates.  If a newer post is found, it presents release notes / changelogs (optionally) and offers to download the update.  After downloading, the user has the option to install and restart the app.  The quick test I did was successful and seemed pretty slick (more testing required).  The only custom tweak I&#8217;ll need to do is make sure there isn&#8217;t an active encode going on before &#8220;install and restart&#8221; is allowed.</p>

<p>rooVid&#8217;s appcast:  <a href="http://roobasoft.com/rooVid/appcast.xml">http://roobasoft.com/rooVid/appcast.xml</a></p>
]]></content:encoded>
			<wfw:commentRss>http://roobasoft.com/blog/2006/02/15/sparkle/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Burnt by Implicit Overloading (poor naming / thinking on my part)</title>
		<link>http://roobasoft.com/blog/2006/02/08/burnt-by-implicit-overloading-poor-naming-thinking-on-my-part/</link>
		<comments>http://roobasoft.com/blog/2006/02/08/burnt-by-implicit-overloading-poor-naming-thinking-on-my-part/#comments</comments>
		<pubDate>Wed, 08 Feb 2006 12:29:54 +0000</pubDate>
		<dc:creator>BrianC</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Interface Builder]]></category>

		<guid isPermaLink="false">http://roobasoft.com/blog/2006/02/08/burnt-by-implicit-overloading-poor-naming-thinking-on-my-part/</guid>
		<description><![CDATA[I&#8217;m trying to load a NSPanel with a controller that inherits from NSWindowController. So my controller&#8217;s init calls: self = [super initWithWindowNibName:@"NibNameHere"]; and then I call showWindow on my now init&#8217;d controller object. All pretty straight forward. Problem is that the dang &#8220;window&#8221; assigned to files owner wasn&#8217;t showing up. Well, to make a painful [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m trying to load a NSPanel with a controller that inherits from NSWindowController.  So my controller&#8217;s init calls:</p>

<p><pre class="code">
    self = [super initWithWindowNibName:@"NibNameHere"];
</pre></p>

<p>and then I call showWindow on my now init&#8217;d controller object.  All pretty straight forward.  Problem is that the dang &#8220;window&#8221; assigned to files owner wasn&#8217;t showing up.  Well, to make a painful story short, the problem was that I stupidly wrote a &#8216;window&#8217; method myself which overrode NSWindowController&#8217;s window method and understandably confused/broke things.  Not sure what I was thinking, probably something like &#8220;oh, I need that &#8216;window&#8217; reference elsewhere, I <em>must</em> need a &#8211; (NSPanel *) window, let me just create that now&#8221;.  Nuked the &#8211; window and all was better in the world.  It&#8217;s been a tough 24 hours.</p>

<p>The lesson learned?  If you&#8217;re panel or window isn&#8217;t showing up when you run initWithWindowNibName / showWindow, make sure you haven&#8217;t overloaded any of your base class implementations with a wrong one of your own.  Although, 90% of the time it probably just means you didn&#8217;t set &#8216;window&#8217; for your Files Owner in IB.</p>
]]></content:encoded>
			<wfw:commentRss>http://roobasoft.com/blog/2006/02/08/burnt-by-implicit-overloading-poor-naming-thinking-on-my-part/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

