Fritz Anderson's Weblog

Observations and Emendations

Here's a dumb one: My intention was to use the source file GetMetaDataForFile.m in the MetaLinear.codeproj project. Instead, I left the project template's reference to GetMetaDataForFile.c (note the .c suffix) unchanged. The project would try compiling the .c file provided by Apple's importer-project template, and produce a warning that the getter function was not filled. 
 
The sample code disk image that accompanies this site corrects the error. 

Posted by:

As I mentioned earlier, Xcode's gcc no longer supports embedded functions (functions defined inside other functions). The earlier note corrected the problem in the printed code in chapter 23. 
 
The sample code on the CD that accompanies Step into Xcode contains another instance of this error. The function in question begins at line 31 in PointStat.m beginning with Chapter_12/2 and all later versions. 
 
Replace that function with a C macro: 
 
#define DoesntImplement(aSelector) ((newDelegate != nil) && \ 
![newDelegate respondsToSelector: aSelector]) 
 
 
The sample-code disk image that accompanies this site reflects the change. 

Posted by:

Section 5.2 ends with the sentence, "Now the process of building Linear will include a build, if necessary, of Linrg and will copy Linrg to Linear's Resources directory inside its bundle." This is incorrect. Making Linear dependent on Linrg will cause Linrg to be built in the process of building Linear, but it will not tell Xcode to copy the Linrg tool into Linear's application bundle. 
 
A more-accurate end to section 5.2 would be 

 

Now the process of building Linear will include a build, if necessary, of Linrg.

 

One last step: We don't want simply to build Linrg; we want the Linrg tool to be part of the Linear application's resources. To do this, find Linrg.xcodeproj in the Groups & Files list, and click on the disclosure triangle next to it. This will reveal the Linrg tool product. Drag this icon down to the Targets group, and hold Linrg over the group's icon. The group will open to reveal the target Linear. Drag Linrg over the Linear target, and keep holding it there. A list now opens of the tasks, or build phases, performed in building Linear. One of these phases is "Copy Bundle Resources," which is the phase that moves non-executable files into the application package.

 

Once again, hold Linrg over the Copy Bundle Resources phase; the phase will open up. Drag Linrg so it is just below the Copy Build Resources list item, then release it. Now Linrg is not just a file to be built in Linear's build process, but is marked for copying into the Linear application itself.

 
 

Posted by:

If you're interested in hearing about the improv scene from the inside, The Second City sponsors a podcast hosted by Mainstage musician Ruby Streak. You can get the show through the podcast's home page, or via the iTunes link. The show is usually flagged as "explicit," as conversations among artists often are. 
 
Ruby is an improv accompanist. This is different from an improvisational musician, because that would be a jazz player. Ruby has training in jazz, but that's not the only genre she plays. She is an accompanist for improvisational theater. 
 
The accompanist does the instrumentals for a show's songs. She also provides a background score for the whole show. Because this means keeping up with the unpredictable demands of the improvised parts of the show, the accompanist is no less a member of the ensemble than the actors. It is extremely difficult work. She has to prepare for a new review just as intensively as the actors. You have to love it to do it. Because the talent is so rare, the accompanist is the only improv player who stays with the show revue after revue, for decades at a stretch. An accompanist knows all the stories, and the reasons behind them. 
 
Be sure to catch episode one of WBRB, as it provides the context for the other episodes. 

Posted by:

Login Information
Username:
Password: