我使用NSURLConnection通过HTTP获取图像,如下所示 -
NSMutableData *receivedData;
- (void)getImage {
self.receivedData = [[NSMutableData alloc] init];
NSURLConnection *theConnection = // create connection
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[receivedData appendData:data];
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection {
[connection release];
UIImage *theImage = [UIImage imageWithData:receivedData];
}
Run Code Online (Sandbox Code Playgroud)
通常它工作正常,但有时我看到这会被记录 - :损坏的JPEG数据:数据段的过早结束
此时,图像无法完全呈现.我会看到它的75%,然后右下角是一个灰色的盒子.
关于如何解决这个问题的任何想法?我是不正确地构建我的图像?
所以,是的,我是这个疯狂的iPhone世界中的Java家伙.在内存管理方面,我对我正在做的事情并不十分了解.
我有一个使用导航控制器的应用程序,当需要继续下一个视图时,我的代码如下所示:
UIViewController *myController = [[MyViewController alloc] initWithNibName:@"MyView"
bundle:[NSBundle mainBundle];
[[self navigationController] pushViewController:myController animated:YES];
Run Code Online (Sandbox Code Playgroud)
现在根据Apple关于内存管理的基本规则
如果使用名称以"黄金"或"新",或包含"复制"的方法创建它,你需要一个对象的所有权(例如
alloc,newObject或mutableCopy),或者如果你发送一个retain消息.您有责任放弃使用release或拥有的对象的所有权autorelease.在收到对象的任何其他时间,您不得释放它.
对我来说,这意味着我应该发布myController或给它一个autorelease消息.但是,每当我尝试这样做时,我的应用程序会因为我从堆栈中推送和弹出视图而崩溃.
这对我来说没有味道,但在运行仪器时,它声称我没有任何内存泄漏.
所以我的问题是
虽然我有一段时间以来一直是开发人员,但我很幸运能够避免在XML上做很多工作.所以现在我有一个项目,我必须与一些Web服务进行交互,并希望使用某种Object-to-XML Mapping解决方案.
我唯一知道的就是JAXB.这是最好的吗?还有其他建议吗?
一个问题 - 我使用Java 1.4,因此我无法对注释做任何事情.
我有一个iPhone应用程序,其中许多域对象都填充了用户输入的数据.为了在中断后恢复状态,这些对象实现NSCoding协议并在applicationWillTerminate消息中写入磁盘(Documents目录).然后,当再次启动应用程序时,将加载数据字节并重新填充域对象.获取文件目录的代码如下:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
Run Code Online (Sandbox Code Playgroud)
这在模拟器中运行得很好,但是一旦我将应用程序部署到iPhone,它就停止了工作.iPhone错误代码513的原因 - 显然意味着"许可被拒绝".iPhone开发文档中有一个说明可以解释一下 -
在设备上,返回的路径(documentsDirectory)类似于以下内容:/ var/mobile/Applications/30B51836-D2DD-43AA-BCB4-9D4DADFED6A2/Documents
但是,在模拟器上,返回的路径采用以下形式:
/ Volumes/Stuff/Users/johnDoe/Library/Application Support/iPhone Simulator/User/Applications/118086A0-FAAF-4CD4-9A0F-CD5E8D287270/Documents
这是我所看到的确切行为.我不确定这是如何与获得权限被拒绝的错误以及我可以做些什么来解决它.它确实如下 -
要读取和写入用户首选项,请使用NSUserDefaults类或CFPreferences API.这些接口使您无需构建Library/Preferences /目录的路径并直接读取和写入首选项文件.有关使用这些界面的更多信息,请参阅"添加设置包".
如果应用程序包含应用程序包中的声音,图像或其他资源,则应使用NSBundle类或CFBundle opaque类型来加载这些资源.捆绑包具有资源在应用程序内部的固有知识.此外,捆绑包可以识别用户的语言首选项,并且能够自动选择默认资源上的本地化资源.有关bundle的更多信息,请参阅"应用程序包".
我不知道如何使用Application Bundle来加载数据字节.有什么帮助或例子吗?
我正在开发一款带有一些简单动画的iPhone应用程序.
我有一个想要翻译的观点,但不是一条线.我想抛物面翻译它.想象一下,我正在制作一辆沿弯曲道路行驶的汽车.
我知道我可以将转换正确地设置为CGAffineTransform的实例
问题是,我不知道如何创建转换.我知道如何缩放,翻译等,但我如何翻译?它甚至可能吗?
我在一个新的模型版本中向现有应用程序引入了Unique Constraints.
该模型具有实体Person,其与实体Pet具有可选的一对一关系.Person的删除规则是级联的,Pet的反向关系删除规则是无效的.还有另一个实体,Job,Person也有一对一的关系.但是,删除规则和反向删除规则都是无效的.
人有一个"personID"属性,这是我独特的.
在主队列上下文中,我有一个Person的实例,ID为xxx,没有Pet set.我们称那个人为"查理".我也创建了一个Job,并将其设置为"iOS Dev",并将其分配给Charlie的工作属性.
然后在子私有队列上下文中,我插入一个新的"Charlie"也带有ID xxx(唯一约束)并创建一个Pet并设置它.我没有设置工作.我保存了子上下文没有问题.
紧接着,我尝试保存主队列上下文.但就在此之前,我检查主队列上下文的insertedObjects属性,并按照我的预期看到ID为xxx的Person实例.我期待的是,这个第二个实例将由唯一约束处理,并与前一段中的Person的原始实例"合并".但是,当我实际调用MOC的save:方法时,它抛出异常并检查NSError对象:
错误域= NSCocoaErrorDomain代码= 1550"操作无法完成.(Cocoa错误1550.)"UserInfo = {悬挂对无效对象的引用.= null
关于如何避免异常的任何想法?我习惯于核心数据中的"悬空引用",这意味着关系配置错误,但我已经多次查看它看起来很好,所以我不确定还有什么可以排除故障.我使用NSMergeByPropertyObjectTrumpMergePolicy合并策略涉及所有上下文.
显然这有点难以理解,所以我在Github上提出了一个示例项目以防任何人感兴趣:https://github.com/bpapa/core-data-unique-bug
幸运的是,我必须与 Oracle 合作。还有包裹。
我有一个包,很多不同的开发人员都在接触它,这让我感到害怕。是否可以将包放入版本控制中?是否有某种软件已经可以做到这一点?如果没有,是否有某种出口程序?我可以从文件系统中抓取文件吗?
我正在编写一个可以通过自定义URL启动的iPhone应用程序.所以,我覆盖 - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
要测试我的更改,我必须在模拟器中运行应用程序,然后退出并启动Safari.然后,我在地址栏中输入我的自定义URL以启动应用程序.
但每次我启动时,应用程序都会崩溃.我试图找出原因,但是当我设置断点并从主屏幕(而不是在XCode)启动应用程序时,它似乎没有附加.
我甚至尝试将NSLog语句放在handleOpenURL消息中,但它们不会打印到控制台.
我想我可以创建UIAlertViews但是......是的,哎呀.是否有其他方式连接到模拟器中的调试会话?
我正在开发一款理想情况下使用OAuth与Twitter通信的iPhone应用程序.我知道有很多人使用UIWebView在他们的应用程序内部进行OAuth工作流程,但我不同意这一点,并采用Pownce方法.
问题是,Twitter有使用引脚号码处理桌面应用程序的整个方案.当我在Twitter上注册我的应用程序时,他们有一个Web表单,询问我是否是桌面或Web客户端.如果我选择桌面客户端,当我尝试让用户授权时,我可以设置oauth_callback参数,但Twitter会在授权后忽略它并显示一个密码.如果在twitter的表单上,我指定我是一个Web客户端,它要求我在授权后输入一个重定向到的URL.而且,由于我正在使用特定于iPhone应用程序的URL方案,因此它们的Web表单在验证时失败,因为它似乎只接受符合HTTP协议的URL.
所以,似乎我被卡住了 - 我不能说"桌面",因为我不想打扰别针,我不能说"网络"或我不能使用iPhone应用程序URL.对此有何解决方案?
我是一名正在开发iPhone应用程序的Java程序员.我希望它使用推送通知服务.
我原本以为我可以使用Google App Engine向Apple提供有效负载,但我现在看到它是不可能的,因为App Engine不支持与Apple通信所需的低级套接字编程.
是否有任何替代Google App Engine让我使用Java?
简而言之,我想知道是否有一个支持Java和Socket编程的免费托管平台
更新 - 自写这个问题以来,我写了一个应用程序,使用Urban Airship充当GAE和APNS之间的中间人.它只是膨胀.这有一个应用引擎问题 - http://code.google.com/p/googleappengine/issues/detail?id=1164如果你想关注,但我个人认为这不是真的GAE应该做的事情.只需使用Urban Airship.