我有一个Xcode项目,它有一个"主"静态库目标,包括/链接到其他Xcode项目的一堆其他静态库.
构建"优化(armv6 armv7)"的主库目标时,在CreateUniversalBinary步骤中的最后阶段会发生错误.对于主库包含的库的每个.o文件,将报告以下错误(例如,FBConnectGlobal.o文件):
warning for architecture: armv6 same member name (FBConnectGlobal.o)
in output file used for input files: /Developer_Beta/Builds/MTToolbox/MTToolbox.build/Debug-iphoneos/MTToolbox.build/Objects-normal/armv6/libMTToolbox.a(FBConnectGlobal.o)
and: /Developer_Beta/Builds/MTToolbox/MTToolbox.build/Debug-iphoneos/MTToolbox.build/Objects-normal/armv7/libMTToolbox.a(FBConnectGlobal.o)
due to use of basename, truncation and blank padding
Run Code Online (Sandbox Code Playgroud)
最后,Xcode告诉构建成功了.但是,在应用程序项目中使用最终静态库时,它不会构建,因为它在构建的一部分(armv6)中找到重复的符号,并且在构建的另一部分(armv7)中错过了符号.
任何想法如何解决这一问题?
中号
我可以为Mac OS X创建一个通用二进制文件,它包含我的应用程序的两个版本,一个用SSE4.2编译,另一个用SSE3编译?
在这种情况下,我将使用SSE4.2编译的版本自动加载到支持SSE4.2的CPU.
如果不是,我想获得建议在不支持SSE4.2的旧CPU上运行我的应用程序,但在支持它的CPU上使用SSE4.2.
请注意,如果重要的话,我会定位到Mac AppStore.我使用Clang和Xcode 4.5.
对于Boost,是否有任何MacOSX通用二进制文件(至少i386/ppc为> = macosx10.3)?
我在这里找到了这段代码:
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
str = [NSString stringWithString:@"Running as an iPad application"];
} else {
str = [NSString stringWithString:
@"Running as an iPhone/iPod touch application"];
}
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Platform"
message:str
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
[alert release];
Run Code Online (Sandbox Code Playgroud)
这张支票有多安全?Apple真的建议这样做吗?或者它可能会发生它不会将iPad检测为iPad或iPhone作为iPhone?
我有一个通用的应用程序,可以在iPad,iPhone 4G,3GS和3G上运行并完美运行,但是当在iPod Touch 4G上运行时,它将无法正常运行.
我没有iPod Touch进行测试,但测试人员告诉我,它在设备上安装得很好,但是在运行时会显示应用的iPad版本中的Default.png在启动时被压缩到屏幕上,然后从那里变黑.当应用程序强行退出(使用应用程序切换器)并重新启动时,它会再次执行相同的操作.
我已经仔细检查了目标设备系列是iPhone/iPad并完成了干净的构建等,但仍然没有骰子.
我正在努力使现有的iPhone/iPad项目向后兼容到iPhoneOS 3.0.
我目前的测试设备是带有3.1.3的iPod Touch.
以下代码导致问题:
Class gestureRecognizer = NSClassFromString(@"UISwipeGestureRecognizer");
if (gestureRecognizer != nil)
{
UISwipeGestureRecognizer * leftSwipeRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self
action:@selector(didSwipeLeft:)];
leftSwipeRecognizer.direction = UISwipeGestureRecognizerDirectionLeft;
leftSwipeRecognizer.delegate = self;
[self.view addGestureRecognizer:leftSwipeRecognizer];
_leftSwipeRecognizer = leftSwipeRecognizer;
}
Run Code Online (Sandbox Code Playgroud)
根据Apple文档,UIGestureRecognizer是从iOS 3.2开始定义的.因此,我希望Class gestureReconizer是nil在以前的操作系统版本及以下,如果被跳过.但它不会跳过.gestureRecognizer不是nil,if开始执行和崩溃的代码,leftSwipeRecognizer.direction因为:
-[UISwipeGestureRecognizer setDirection:]: unrecognized selector sent to instance 0x1e5720
Run Code Online (Sandbox Code Playgroud)
这种情况非常令人困惑.我想我正在做这本书的一切.我尝试在使用它之前检查一个类是否存在,但是那个不应该存在的类就在那里,愚弄我的测试,不符合它的预期规格和崩溃.
我当然可以respondsToSelector在这里和那里做一些检查以解决这个崩溃,但这不是一个优雅的方法.
还有其他建议吗?
我在发布版本时收到此警告 -
iPhone/iPod Touch:icon.png:图标尺寸(72 x 72)不符合尺寸要求.图标文件必须为57x57像素,格式为.png(-19014)
这是一个通用应用程序,我在我的项目中有两个icon.png文件,一个在iPhone - >图像和其他在iPad - >图像.
另外在info.plist文件中我将Icon文件设置为"icon"(没有任何扩展名)我假设它会相应地为iPhone 3,iPhone 4和iPad找到正确的文件.
我该如何解决此警告?
我正在开发Iphone应用程序,我想将其转换为通用应用程序.我找到了许多处理这个问题的教程,但它们似乎与SDK和Xcode的新版本不相符.正如许多人所说,我认为制作通用应用程序非常容易.你能给我一些必要的步骤或教程链接吗?谢谢.
我有一个通用iOS应用程序,我希望状态栏(UIStatusBar)在iPad上安装应用程序时显示,而不是在iPhone上安装时显示.
目前我的解决方案是将app-info.plist中的UIStatusBarHidden设置为true(这会影响两个版本),然后在应用程序中重新启用它:didFinishLaunchingWithOptions:如果设备是iPad.这种方式有效,但我希望状态栏在应用程序仍在加载(显示默认屏幕)时显示,而不是iPhone.
有没有办法实现这个目标?(我尝试添加一个iPad特定的键/值UIStatusBarHidden~ipad但是没有用)
我的xcode版本是3.2.5.
我的应用程序是在iPhone上创建的.我希望我为iPhone编写的应该运行并适用于iPad.如何解决这个问题?
帮帮我朋友,如何创建这种类型的应用程序?
在mac os x中,你可以将32位,powerpc和64位二进制文件组合在一个可执行文件中,使用"lipo"就可以在linux中实现这样的功能吗?
universal-binary ×11
iphone ×6
ios ×3
ipad ×3
xcode ×3
binary ×1
boost ×1
c ×1
fat-binaries ×1
ipod-touch ×1
linux ×1
macos ×1
objective-c ×1
sse ×1
uistatusbar ×1