{"id":307,"date":"2007-03-23T09:55:53","date_gmt":"2007-03-23T16:55:53","guid":{"rendered":"http:\/\/www.red-sweater.com\/blog\/307\/the-responder-chain"},"modified":"2007-03-24T06:21:38","modified_gmt":"2007-03-24T13:21:38","slug":"the-responder-chain","status":"publish","type":"post","link":"https:\/\/redsweater.com\/blog\/307\/the-responder-chain","title":{"rendered":"The Responder Chain"},"content":{"rendered":"<p>Looks like I&#8217;m about a week behind in my <a href=\"http:\/\/www.latenightcocoa.com\/?q=node\/56\">Late Night Cocoa<\/a> listening. I finally caught up with the episode on <a href=\"http:\/\/www.latenightcocoa.com\/?q=node\/56\">NSResponder<\/a>, featuring <a href=\"http:\/\/www.bignerdranch.com\/instructors\/hillegass.shtml\">Aaron Hillegass<\/a> of <a href=\"http:\/\/www.bignerdranch.com\/\">Big Nerd Ranch<\/a>.<\/p>\n<p>Scotty is doing such a fantastic job with all the podcasts, I shouldn&#8217;t be surprised that this one was also excellent. I really like the way he pulls information out of his guests in a way that makes the shows engaging for both experienced and (I assume!) newbie Cocoa developers alike.<\/p>\n<p>This episode in particular is a must-listen for Cocoa developers who aren&#8217;t <em>completely comfortable<\/em> with the responder chain. In particular, I like the way Aaron comes right out and declares the &quot;First Responder&quot; proxy icon in Interface Builder to be &quot;a lie.&quot; In my travels I&#8217;ve found that &quot;First Responder&quot; is a woefully misunderstand concept.<\/p>\n<p>Mostly the material in the show was a recap for me, but one concept I had never considered was that of a &quot;view controller&quot; that is inserted directly into the responder chain. Whoah, nifty! Aaron referred specifically to the MOViewController from the <a href=\"http:\/\/mokit.sourceforge.net\/ReleaseNotes.html\">MOKit<\/a> open source framework, by <a href=\"http:\/\/www.lorax.com\/\">Mike Ferris<\/a>. The idea is instead of subclassing a view to be able to get at all of its NSResponder-oriented behaviors, why not just insert an object immediately before it in the chain? Now you can respond to whatever want to (Aaron uses the example of a delete key for NSTableView), and pass the rest of the events through to the view.<\/p>\n<p>Great stuff. Thanks Scotty &amp; Aaron for an entertaining and educational show.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Looks like I&#8217;m about a week behind in my Late Night Cocoa listening. I finally caught up with the episode on NSResponder, featuring Aaron Hillegass of Big Nerd Ranch. Scotty is doing such a fantastic job with all the podcasts, I shouldn&#8217;t be surprised that this one was also excellent. I really like the way [&hellip;]<\/p>\n","protected":false},"author":10,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11,34],"tags":[],"class_list":["post-307","post","type-post","status-publish","format-standard","hentry","category-cocoa","category-links"],"_links":{"self":[{"href":"https:\/\/redsweater.com\/blog\/wp-json\/wp\/v2\/posts\/307","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/redsweater.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/redsweater.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/redsweater.com\/blog\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/redsweater.com\/blog\/wp-json\/wp\/v2\/comments?post=307"}],"version-history":[{"count":0,"href":"https:\/\/redsweater.com\/blog\/wp-json\/wp\/v2\/posts\/307\/revisions"}],"wp:attachment":[{"href":"https:\/\/redsweater.com\/blog\/wp-json\/wp\/v2\/media?parent=307"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/redsweater.com\/blog\/wp-json\/wp\/v2\/categories?post=307"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/redsweater.com\/blog\/wp-json\/wp\/v2\/tags?post=307"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}