从XCode运行应用程序的行为与.ipa相比有所不同

我有一个非常困惑的问题。 我的应用程序使用几个自定义button,使用手势识别器来确定一个水龙头或长按。

当我在我的设备上从XCode运行应用程序时,一切正常。 但是,当我将应用程序打包在一个.ipa文件中并将其安装在同一个设备上时,button不再有效! 手势没有被识别,按下时也不会改变状态。 其他一切似乎正常工作…

我testing的设备是iPhone 5(运行iOS 6.1.4)和iPhone 4&4S(均运行iOS 6.1.3)。 我在Max OSX 1.8.3上使用XCode 4.6.2。

任何想法可能会导致这种非常奇怪的行为?

PS:“Xcode generated”代码在我从XCode断开后继续工作。

通常,存档到IPA文件中的代码将使用与从XCode运行时不同的configuration。 如果没有查看项目文件或获取更多信息,我无法猜出具体的错误,但是我会尝试的第一件事就是对所使用的scheme执行编辑scheme,并比较运行时使用的构buildconfiguration行动和档案行动。

这可能是优化级别 ! 你可能用Fastest, Smallest [-Os]构buildAdHoc构build。 请参阅您的构build设置中的优化级别。 用Fastest, Smallest [-Os]构build你的debugging,然后你可以看到你的行为不当行为,所以你可以修复它, 仍然提交的应用程序与优化的首选方式 (释放configuration)。

Fastest, Smallest [-Os]以某种方式更严格地释放弱引用,就我所见。

同样令人惊讶的事情发生在我身上。 我在GameStrings.h文件中定义了针对不同macros的所有项目相关的string。 这些string在我的iPad 2的.ipa文件中使用它们时被检测到,但它们没有显示在屏幕上。 这完全是关于目标scheme的configuration。 正如@ScorpioCurse所说,构build和归档项目可能使用不同的构buildconfiguration,这些types的问题可能会出现。

建立运行方案的设置

构建存档方案的设置

只要检查这两个(构build和存档)scheme是否使用相同的configuration。 确保这两个scheme使用相同的生成configuration。