我已经编写了一个iPhone和iPad通用应用程序,可以在Xcode上的iPad模拟器中正常运行,但我现在想测试iPhone的功能.我似乎无法使用此代码运行iPhone模拟器,因为它始终默认为iPad?
相反,我试图在设备上运行,当它开始运行时,我收到以下错误:
dyld: Symbol not found: _OBJC_CLASS_$_UISplitViewController
Referenced from: /var/mobile/Applications/9770ACFA-0B88-41D4-AF56-77B66B324640/Test.app/Test
Expected in: /System/Library/Frameworks/UIKit.framework/UIKit in /var/mobile/Applications/9770ACFA-0B88-41D4-AF56-77B66B324640/Test.app/TEST
Run Code Online (Sandbox Code Playgroud)
由于App是以编程方式而不是使用XIB构建的,因此我使用main.m方法中的以下行拆分了2个设备逻辑:
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate_Pad");
}
else
{
retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate_Phone");
}
Run Code Online (Sandbox Code Playgroud)
从那时起,他们使用不同的AppDelegates,我已经检查了我的标题,以确保永远不会使用UISplitView,也不会通过Phone逻辑导入.
如何避免此错误,是否有更好的方法在这个以编程方式创建的应用程序中拆分通用逻辑路径?
我有一个多目标iPhone应用程序,目前包含一个带有常量定义的头文件,这些定义在构建时有条件地包含,具体取决于正在构建的目标.
但是,我想知道是否可能更好地将此信息包含在构建的info.plist中,因为这通常包含特定于目标的元,因此逻辑上看起来更合适.
因此,我的问题是:
我在iPhone应用程序中有一个设置包,它有几个微妙的变体目标.
问题是我需要在每个设置包中自定义一些字符串,以使它们适合每个目标.似乎如果Settings包被命名为除Settings.bundle以外的任何东西,它将不会拾取捆绑包(可以理解,我可以在plist中指定备用名称吗?).
如果我尝试将它们放在不同的文件夹中并将它们称为相同的东西,Xcode会非常混乱,并允许您编辑实际上是同一个源的"2个文件".
我正在尝试为iPad创建一个简单的Web应用程序,需要在没有互联网连接的地方使用.该应用程序是一个简单的"幻灯片"必不可少的,但也包括一些视频文件(通常约100MB).
最初,我计划使用HTML5的离线清单缓存,以便在上网之前将互联网连接可用时将资产同步到iPad的内存,但不幸的是,似乎存在限制(至少在iOS 3.2中)缓存可以完全没有超过5MB.
看看谷歌使用HTML5网络数据库的方式,我想知道另一种解决方案是否可能将视频/图像资产投入数据库中的blob.但是,我很难找到一种方法来读取二进制数据以存储在数据库中的blob中.
我的问题是:
我目前正在实现一个客户端应用程序,POST是一个基于HTTP的文件,并在文件的数据参数上实现了base64编码.
但是,在检查具有文件上载表单的简单HTML页面与在描述文件参数时未在主体中发送Content-Transfer-Encoding标头的服务器之间的流量时,似乎是这样.
这是通过HTTP POST文件的首选方式吗?