像许多人一样,我希望让Xcode使用一个文件夹结构来镜像磁盘上的文件夹结构.但是,我无法将"文件夹引用"(青色文件夹)中的代码显示在"编译源"下的项目目标中.有没有办法做到这一点?
我甚至设法将"青色"文件夹添加到"编译源"构建阶段,但这不会导致添加该文件夹的内容.
如何使用文件夹引用代码?
出于CI的目的,我需要能够在我们的每晚构建中生成XCARCHIVE和IPA文件.IPA适用于我们的测试人员,使用我们的临时密钥签名,XCARCHIVE将发送给客户端,以便他们可以将其导入Xcode并在他们满意时将其提交到应用商店.
通过一些谷歌搜索来生成IPA很简单,但是如何生成.XCARCHIVE文件是我的目标.我发现的最接近的是:
xcodebuild -scheme myscheme archive
Run Code Online (Sandbox Code Playgroud)
但是,这会将.xcarchive存储在一些难以找到的文件夹中,例如:
/Users/me/Library/Developer/Xcode/Archives/2011-12-14/MyApp 14-12-11 11.42 AM.xcarchive
Run Code Online (Sandbox Code Playgroud)
有没有办法控制存档的放置位置,名称是什么,以及如何避免重新编译它?我想最好的结果是从你执行'xcodebuild构建'时生成的DSYM和APP生成xcarchive - 这可能吗?
我想使用Xcode 4和Cocoa Touch静态库项目管理工作区中的项目,这些项目包含我可以从其他项目引用的共享代码.根据WWDC 2010视频和Xcode 4文档,Xcode 4中的工作空间有一个"隐式依赖"功能.我一直试图让它工作,我没有取得多大成功.
示例工作区:DependenciesInXcode4.zip
您可以看到最基本的示例项目有2个静态库项目,我将其命名为Library1和Library2.然后我在每个项目中都有一个类,我从名为PrimaryApp的iPhone项目中引用它.在添加import语句时,我得到了Code Sense的支持,但构建失败了.

您可以看到构建失败的原因,因为它无法找到依赖项.

为解决这些问题,我手动链接了Library1和Library2项目.

我还必须将这些项目的路径添加为标题搜索路径.

现在,当我构建两个依赖库,然后在iPhone模拟器中运行PrimaryApp时,它会成功构建并运行.我发现它并不总是确保在必要时构建依赖项目,这显然是一个手动过程.这不是我认为的"隐式依赖",因为Xcode视频和文档暗示它应该工作.我一直在寻找更具体的例子,但到目前为止我没有运气.即使在Stackoverflow上,我还没有看到令人满意的答案.
看起来开发人员正在回归旧技术而不是真正使用新的"隐式依赖"功能.
我非常感谢帮助理解如何在Xcode 4中使用"隐式依赖"来处理工作空间.
这是我的问题:
我的旧名字由类似于此的驼峰案类型名称组成
MyApp的
然后我把它改成了
Myapp '注意A现在是非上限'
我通过单击MyApp导航器菜单中的名称并更改它来更改此项,然后出现了一个帮助框,要求我进行系统范围的更改,我单击是!
但现在当我构建这个应用程序时,它说我的应用程序的名称是:
MYAPP-TEMP-CASEINSENSITIVE,重命名
我现在想知道如何摆脱-temp-caseinsensitive-rename部分?
自升级到xcode 4以来,我无法找到指定资源所属目标的位置.以前,我选择了文件并点击命令+ i,但现在这似乎运行程序,而不是打开该文件的信息框.
我知道您可以转到首选项并启用编辑器左侧显示的列,显示行号.
但我想问有没有办法在某种状态栏或Xcode UI的任何其他部分显示行号而不启用此选项(类似于Xcode 3所做的那样)?
[更新03/04/2015]
这个问题现在已经有4年了,适用于我现在在主题中指定的特定版本的XCode.
我已经搜索了很多这个论点,但我找不到解决方案,我甚至发布了stackoverflow,但我很快就删除了这个问题,因为访问量很少.现在我再试一次.
我有一个工作区,有两个不同的项目A和B.
B有两个目标,一个构建静态库Blib.a,另一个构建一个束B.bundle.所有这些都构建在派生目录中.
在项目AI中,可以轻松地从构建阶段添加静态库.但是我找不到包含捆绑包的方法.从A中的"复制资源"选项卡看不到B.bundle.因此,我需要手动添加所有这些含义.我还考虑过使用脚本,但我想将它作为最后一个选项.
有人为此解决了问题吗?我错过了什么 ?
谢谢
是否可以定义Objective-C块属性但在Xcode 4中仍然具有完整代码完成?
如果我使用typedef来定义块:
typedef void (^CompletionBlock)(MyObject *myObj);
然后定义属性:
@property (nonatomic, copy) CompletionBlock completionBlock;
然后@synthesize在调用setter时我没有得到完整代码完成的属性.Xcode将使用typedef,因此,代码完成不使用完整块语法完成块参数,它使用typedef.
如果我在标头中定义了一个使用完整块语法而不是typedef的方法原型:
@property (nonatomic, copy) void (^completionBlock)(MyObject *myObj);
然后我使用@synthesize,提供的setter接近使用完整的代码完成语法,但关键是它省略了参数名称:
[self setCompletionBlock:(void (^)(MyObject *)) { ... }
最后,如果我尝试@synthesize然后覆盖setter实现或将原型放在头文件中:
- (void)setCompletionBlock:(void (^)(MyObject *myObj))completionBlock {...}
会出现一条警告,指出属性类型与访问者类型不匹配.无论我如何尝试使用语法,我都无法定义块属性和具有完整代码完成语法的setter.我可以吃蛋糕吗?
谢谢!