1. Trang chủ
  2. » Công Nghệ Thông Tin

Lập trình Wrox Professional Xcode 3 cho Mac OS part 81 pdf

10 343 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 2,98 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

The hierarchy and names of the subfolders within the templates folder determine the grouping and order of the templates that will appear in the New File or Project assistant.. If a folde

Trang 1

Source Code Management

The path setting specifi es the path to the Perforce source control client tool The CVS and Subversion client tools are fi xed

PBXPerforceToolPath /usr/local/bin/p4 The default path to the Perforce client

tool

XCSMLogSize 500 The maximum amount of text (in K) that

will be kept in the SCM log, and that can

be viewed in the SCM Results window

Documentation

The following table lists the documentation setting:

XCDocWindowSharesGlobal FindString

fi eld for the help window automatically picks up the value of the global fi nd string This is a system - wide resource shared by Xcode ’ s fi nd windows and other fi nd - savvy applications If you make a search in Mail, for instance, switching to Xcode automatically picks

up the last term you searched for

Change this setting to NO to suppress this behavior

TEMPLATES

Although this is not offi cially documented, it ’ s also possible to customize Xcode by adding your own project and fi le templates Templates are installed in the File Templates and Project Templates folders found in the /Developer/Library/Xcode folder You can customize the existing one or add your own here Like text macros, Xcode no longer searches the system (/Library ) or user ( ~/Library ) domains for templates, so if you want to customize them you ’ ll have to hack the set that comes installed with Xcode

The hierarchy and names of the subfolders within the templates folder determine the grouping and order of the templates that will appear in the New File or Project assistant The easiest way to see this

is to compare the fi le structure of a template folder with the new fi le assistant, shown in Figure 23 - 8

Download at getcoolebook.com

Trang 2

You can group your templates however you want, simply by placing them into a subfolder of related

templates, with one exception: some groups have a .plist fi le that defi nes additional information

about the group, selection options, and so forth If a folder contains a .plist fi le you will have to

edit it to include your template defi nition or else Xcode will ignore it If the folder doesn ’ t have a

.plist fi le, just drop in your template and it will appear in Xcode

File Templates

File templates can be a single fi le or a fi le template bundle The simplest way to add a fi le template is

to place a plain document fi le in the File Templates folder The next time you start Xcode and use

the File ➪ New File command, the name of the fi le appears in the list Select it and Xcode reads the

fi le and use its contents to fi ll in your new fi le

File template bundles are a little more sophisticated File template bundles are not real bundles,

but are folders that mimic the bundle structure A fi le template bundle has an extension of

.pbfiletemplate The name of the folder is the name of the template, as it will appear in the

New File assistant Inside the folder is a TemplateInfo.plist fi le and one or two document fi les

TemplateInfo.plist contains a number of properties, described in the following table:

MainTemplateFile This property is required It is the name of the primary

template fi le in the bundle

CounterpartTemplateFile This property is the name of a companion fi le that can be

created by the template This property is optional If present, Xcode displays a check box option in the new fi le dialog box that asks if the user wants to create the companion fi le at the same time they create the main fi le

Description Text that describes the template This description appears

in the lower pane of the new fi le assistant when the user selects this template in the list This property is optional, but highly recommended If omitted, Xcode displays “ No description available ”

FIGURE 23 - 8

Trang 3

Create the template fi le or template bundle, name it appropriately, and place it in the File Templates folder or in a subfolder if you want it to be in a group of templates Relaunch Xcode and your new template appears in the new fi le assistant

Template Macros

Templates can contain variable names that are replaced with a value when the template is read The macro names are surrounded by double - angle quotes ( NAME » The following table lists the macro variables defi ned by Xcode when a fi le template is read

The double-angle quote characters, which are Unicode characters 0x00AB and 0x00BB, respectively, require that the fi le be encoded correctly — “Correctly”

being defi ned as whatever Xcode expects the encoding to be Open the template fi le in Xcode If the double-angle quotes appear as one or two strange characters, then the encoding is mismatched First note the current encoding.

Now, try switching to a different encoding using the View ➪ Text ➪ File Encoding menu and choose the Reinterpret option If the double-angle quote characters appear correctly, you’ve discovered their encoding Switch back to the original encoding, this time choosing the Convert option, and save the fi le.

You can type these characters using Option+\ and Option+Shift+\ on a U.S.

Standard keyboard If you are using a different keyboard layout, you may have a different key combination Refer to the system’s Keyboard Viewer palette if you have diffi culty fi nding them, or use the system’s Character palette to insert the characters directly.

FILENAME My File.txt The complete name of the new fi le

FILEBASENAME My File The fi lename given to the fi le by the user,

without its extension

FILEBASENAMEASIDENTIFIER My_File The base fi lename, suitable for use

as a language identifi er The same

as FILEBASENAME , but with all non -alphanumeric characters replaced with underscores

FULLUSERNAME James Bucanek The current user ’ s full account name

PROJECTNAME Tom & Jerry The name of the project

continues

Download at getcoolebook.com

Trang 4

MACRO EX AMPLE DESCRIPTION

PROJECTNAMEASIDENTIFIER Tom _Jerry The name of the project, suitable for

use as a language identifi er The same

as PROJECTNAME , but with all non -alphanumeric characters replaced with underscores

PROJECTNAMEASXML Tom & amp; Jerry The name of the project encoded using

XML entities to escape any special characters

USERNAME james The current user ’ s UNIX account name

40EB BFCF -4550CA9F54CA

A Universally Unique Identifi er This value will be diff erent every time

ORGANIZATIONNAME Genius, Inc A common macro defi ned in the expert

preferences

The UUID value is interesting and might be useful if the documents you are creating need to be

managed by a database or identifi ed in some fashion

The ORGANIZATIONNAME macro was described in the “ Who ’ s —MyCompanyName—? ” section of

Chapter 4

The PROJECTNAME and related macros are defi ned for project templates or if the fi le is being added to

a project If you create a new fi le using a template but select “ none ” as the project to add it to, these

variables are replaced with nothing In fact, any undefi ned or unrecognized macro name is replaced

with nothing in the new fi le

Project Templates

You can also create your own project templates If you want to create a simple project template that

gets duplicated verbatim when created, follow these steps:

1. Create a new project Confi gure the project the way you want it: Add source fi les,

frameworks, targets, special settings, and so on

2. Close the project Delete the build folder and any other intermediate fi les that might be in

the project folder

3. Rename the project folder to the name of the template as you want it to appear in the new

project assistant

4. Move the project folder to a location in the /Developer/Library/Xcode/Project

Templates folder where you want it to appear in the new project assistant list Like fi le tem-plates, some of these groups have .plist fi les that defi ne the templates for that group Copy

(continued)

Trang 5

your template to a folder without a .plist fi le, such as the Other folder, or edit the .plist

fi le to include the new template

5. Quit Xcode Relaunch Xcode and create a new project using your template

Project Templates with Macros

Simple project templates are easy, but boring What you really want are project templates like those that ship with Xcode These include fi les, class names, and project settings that magically alter themselves to match the name of the project you just created

Making a project template that will customize itself is considerably trickier than what ’ s involved

in making a fi le template How much of your project gets dynamically confi gured depends on how much work you want to put into it The key to confi guring a self - customizing project template

is to create a TemplateInfo.plist fi le and embed that in your project document package The TemplateInfo.plist fi le should contain three properties: Description , FilesToRename , and FilesToMacroExpand as described in the following table:

Description String This optional property is a string that describes the

template This description appears in the lower pane

of the new project assistant window when a user selects this template from the list

FilesToRename Dictionary This optional property is a list of key/value pairs

Each pair consists of the name of the original fi le in the project and the name it should be renamed to when the new project is created

FilesToMacroExpand Array This optional property is a list of fi le name paths,

relative to the new project folder, of the fi les that should be scanned for replicable template macro names

You should defi nitely supply a description string It makes the template more pleasant to use, and is useful for debugging (explained later)

The FilesToRename property is a translation table that renames certain fi les in the project as the project template is being duplicated The values in this dictionary can include template macros, which allow you to give fi les in your project dynamic names In the example shown in Figure 23 - 9, the Template_Prefix.pch fi le in the project template will be renamed to « PROJECTNAME » _Prefix.

pch PROJECTNAME will be replaced with whatever fi lename was given to the new project by the user You can use any of the template macros listed previously in the “ Template Macros ” section in the project document or in the source fi les of your project template The fi les in the project document package are automatically scanned for template macro names This is how the macro names in the TemplateInfo.plist fi le are expanded Also scanned is the project.pbxproj document Thus,

Download at getcoolebook.com

Trang 6

any build settings in the project that contains a template macro name will be replaced This allows

you, for example, to set the Prefi x Header build setting to « PROJECTNAME » _Prefix.pch so it will

match the name of the renamed Template_Prefix.pch fi le in the new project

FIGURE 23 - 9

Other fi les in the project are not automatically scanned for template macro names To replace

template macro names in any other fi les requires that you add its path to the FilesToMacroExpand

property The names in the list are the fi les in the new project, not the template, so if you want to

process a fi le that you ’ ve also renamed, use the name the fi le was changed to — which itself will

probably involve template macros

In the example previously shown in Figure 23 - 9, the « PROJECTNAMEASIDENTIFIER » Helper.h fi les

are scanned for template macros The original fi le in the TemplateHelper.h template looks like this:

TemplateHelper.h

//

// « PROJECTNAMEASIDENTIFIER » Helper.h

// « PROJECTNAME »

//

// Created by « FULLUSERNAME » on « DATE »

// Copyright « YEAR » « ORGANIZATIONNAME » All rights reserved.

//

#import < Cocoa/Cocoa.h >

@interface « PROJECTNAMEASIDENTIFIER » Helper : NSObject

{

}

@end

Not only will the fi le be renamed to match the project, but the class it defi nes will also get a

matching name

Trang 7

File References in Project Templates

The FilesToRename property renames fi les in the project folder The macro replacement can

be used to generate names dynamically in fi les and project properties Unfortunately, these two mechanisms don ’ t work closely with each other or with the project itself The FilesToRename property just renames fi les It doesn ’ t alter or fi x up any of the project references to those fi les If nothing else is done, the project will contain bad references to the original fi les To fi x this, you must manually insert template macros into the project.pbxproj fi le You can do this in Xcode

or the Property List Editor by temporarily giving the project.pbxproj fi le an extension of .xml or .plist , or you can use another text editor like BBEdit

If you edit template property fi les with BBEdit, make sure you use the correct encoding Property list fi les typically have an encoding of UTF-8 If you open one of these fi les using ASCII encoding, the double-angle quote characters will not be encoded correctly Use BBEdit’s File ➪ Reopen Using Encoding ➪ Unicode command to reinterpret the fi le as UTF-8.

You ’ ll have to fi nd and replace the fi lename paths in the property fi les by hand, because there is

no facility for entering these dynamic names in the Xcode interface The format for the project document fi le is not intended to be “ user friendly ” Nevertheless, it ’ s pretty safe to search for the

fi le names you want to make dynamic and replace them with template macros Just be careful not

to make any other structural changes in the fi le, or you ’ ll likely end up with a corrupted project document

For example, here ’ s a fragment of a project.pbxproj fi le that contained references to the TemplateHelper.h , TemplateHelper.m , and main.c source fi les:

1AAE3664092E3E8c23412C87 /* TemplateHelper.h */ = {isa = PBXFileReference;

fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path =

« PROJECTNAMEASIDENTIFIER » Helper.h; sourceTree = " < group > "; };

1AAE3665092E3E8c23412C87 /* TemplateHelper.m */ = {isa = PBXFileReference;

fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path =

« PROJECTNAMEASIDENTIFIER » Helper.m; sourceTree = " < group > "; };

29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference;

fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m;

sourceTree = " < group > "; };

The fi le has been edited so that the fi rst two source fi le names are now altered dynamically to match their renamed versions in the new project

Problems with Project Templates

Template project problems can be diffi cult to isolate, because there are no overt errors or warnings produced by Xcode to tell you that something is wrong

Download at getcoolebook.com

Trang 8

The fi rst thing to check in your new template is that its description appears in the new project

assistant window when you choose your template in the list If it does not, then Xcode didn ’ t read

your TemplateInfo.plist fi le Make sure the location, syntax, and encoding of the fi le is correct

You might fi nd that the easiest way of doing this is to open the fi le using the Property List Editor

and forcing the fi le to be resaved The Property List Editor usually corrects any inconsistencies when

it writes a new fi le

If you have macros in source fi les that aren ’ t being expanded, make sure they have been written

using the default encoding expected by Xcode for that fi le type Follow the steps for fi xing the

encoding in the earlier “ Template Macros ” section Also double - check that you ’ ve added the fi le to

the FilesToMacroExpand property If the fi le is one that gets renamed, make sure you specifi ed its

new name — not its original name — in the template

Look at the system console log Some problems encountered during template processing are logged

here and may give you some clue as to what is wrong

Last, but not least, study (or just copy) the Xcode templates that come preinstalled They

demonstrate a wide range of customizations Learning how they work may illuminate what ’ s not

working in yours

Project Template Portability

If you are creating project templates for your own consumption, you ’ re pretty much done However,

if you want to create sophisticated templates to share with other developers, there are a couple of

additional details you should consider

You ’ ll want to delete your user settings fi les from the project document package These documents

are stored inside the project document package and are named using your logged - in UNIX account

name Other users don ’ t need these documents in their projects

Target Templates

You may also fi nd it useful to create custom target templates These are the templates used by the

new target assistant when you ’ re adding a new target to your project Target templates are defi ned

by the target template fi les found in the /Developer/Library/Xcode/Target Templates folder

A target template fi le is a property list fragment with an extension of .trgttmpl Several properties

must be set correctly for the target template to be functional The important elements are the Class

and ProductType properties The easiest way to create a new target template is to copy a template

fi le that creates the correct target type and edit its other properties This listing shows the target

template fi le for a Cocoa application target:

{

Class = Native;

ProductType = "com.apple.product-type.application";

Description = "Target for building an application that uses Cocoa APIs.";

CustomBuildSettings = {

INSTALL_PATH = "$(USER_APPS_DIR)";

INFOPLIST_FILE = " « PRODUCTNAME » -Info.plist";

OTHER_LDFLAGS = "-framework Foundation -framework AppKit";

GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/

Trang 9

GCC_PRECOMPILE_PREFIX_HEADER = YES;

PRODUCT_NAME = " « PRODUCTNAME » PREBINDING = NO;

GCC_GENERATE_DEBUGGING_SYMBOLS = NO;

GCC_MODEL_TUNING = G5;

};

CustomProductSettings = { CFBundleExecutable = " « PRODUCTNAME » CFBundleInfoDictionaryVersion = "6.0";

CFBundleVersion = "1.0";

CFBundleIdentifier = "com.yourcompany « TARGETNAMEASIDENTIFIER » CFBundleDevelopmentRegion = English;

CFBundlePackageType = "APPL";

CFBundleSignature = "????";

NSMainNibFile = "MainMenu";

NSPrincipalClass = "NSApplication";

};

BuildPhases = ( {

Class = Resources;

}, { Class = Sources;

}, { Class = Frameworks;

}, );

}

After you make a copy of the template fi le, edit the Description , CustomBuildSettings , CustomProductSettings , and BuildPhases properties The CustomBuildSettings can defi ne any build settings you want and can refer to template macro values The PRODUCTNAME and TARGETNAMEASIDENTIFIER template macros are defi ned while creating a new target and can be used

to refer to the new target ’ s name

The CustomProductSettings are present for targets that produce an Info.plist fi le and contain a list of customized values that will appear in the Properties pane of the target ’ s Info window

The BuildPhases property lists the build phases for the new target The possible BuildPhase types are

Aggregate Application Bundle CopyFiles Frameworks Headers

Download at getcoolebook.com

Trang 10

JavaArchive Legacy Library Native Resources ShellScript Sources Tool Refer to other templates, or fi rst create a target of the desired type and add your desired phases to

it, to ensure that the target can accept a particular build phase type You should not include a build

phase in a target type that does not normally accept that build phase type

Name your target template fi le and place it where you want it to reside inside the Target

Templates folder Relaunch Xcode to use the new template

USER SCRIPTS

User scripts are custom actions that appear in the Xcode menu Each script is an executable text

fi le that can optionally interact with the content of your active editor pane, essentially allowing you

to extend the editor with your own commands You can write your scripts using a shell language,

perl , python , ruby , awk , or any other interpreter you want

Although the script is in the form of an executable fi le, you cannot substitute a binary executable The fi le must be a text fi le encoded using UTF-8 However, there is nothing stopping a script from launching another binary executable

or script For example, a custom script could start an AppleScript using the

osascript tool.

Xcode preprocesses script fi les before they are executed Scripts contain additional properties and

commands that enable them to communicate with the Xcode application — in a fashion Because of

the subtle differences between regular executable scripts and custom Xcode scripts, the following

sections use the term “ custom script ” to indicate an executable script that employs special Xcode

syntax

The StartupScript

When Xcode starts, it looks for the custom script /Developer/Library/Xcode/StartupScript

and executes it This script is a custom script that can employ any of the special custom script

extensions explained later — at least those that make sense in the absence of an editor context You

can modify this script to automatically perform any action you want every time Xcode starts

Ngày đăng: 04/07/2014, 06:20

TỪ KHÓA LIÊN QUAN