小编Toa*_*tor的帖子

在ARC时代的财产与ivar

我的理解是,现在设置一个ivar会保留分配给它的对象,因为设置变量默认为strong限定符.因为ivars属于对象的范围,它们被声明并strong保留变量范围内的对象,这意味着当包含ivar的对象仍然存活时,永远不会释放ivars值.

它是否正确?

如果是这样,我是否正确地认为,就记忆管理而言,保留(强)财产和简单的伊娃之间没有区别?

properties objective-c ivar automatic-ref-counting

56
推荐指数
2
解决办法
8886
查看次数

如何保存iPhone应用程序的用户首选项?

问题标题几乎让它消失了 - 我希望我的应用程序记住一些事情.它是某种计算器,因此它应该保存最后使用的值和一些用户可选择的设置.

基本上我想保存一些浮动和BOOL并在下次加载应用程序时再次加载它们.

什么是最好最简单的方法?

谢谢!!

iphone objective-c ios

47
推荐指数
3
解决办法
4万
查看次数

SKProductsRequest - 如何处理超时/连接错误?

干杯,

在我看来,SKProductsRequest不会以任何方式处理超时或连接错误.它要么-(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response在成功的情况下要求其代表,要么不成功.

我想在检索产品时向用户提供某种活动指示,或者如果无法访问appstore,则可能会弹出警报.因为(在失败的情况下)没有来自SKProductsRequest的反馈,但我想知道哪个事件我应该将该反馈的表示联系起来 - 除了等待任意时间.

所以,问题是:是否有一段已知的时间,之后可以安全地假设请求失败了?或者有没有办法检查我刚看不到的待处理请求的状态?

iphone objective-c in-app-purchase ios

25
推荐指数
1
解决办法
7373
查看次数

如何创建神奇的.xcdatamodeld文件夹/包?

最近,我管理(不小心,不要问)删除我的Core Data数据模型文件和类.而且我完全无法再次创建文件,就像它们在新开始的项目中完全相同,这些文件是由XCode自动准备的.

在新项目中,文件看起来像这样:

替代文字

虽然我能够创造的是:

替代文字

我是否提到应用程序不再以这种方式工作了?它崩溃说模型一定不能nil.通过启动一个具有相同名称的新项目并将文件拖到旧项目来解决问题 - 我认为这不是最优雅的解决方案.

然而,我认为有关Core Data的内容我显然还不太明白.

请启发我 - .xcdatamodeld文件夹背后的魔力是什么?为什么Foo.xcdatamodel会显示绿色选中图标?数据模型是否需要以某种方式编译或处理?

非常感谢!

iphone xcode core-data objective-c

15
推荐指数
1
解决办法
1万
查看次数

GPS坐标以度为单位计算距离

在iPhone上,我以十进制度获取用户的位置,例如:北纬39.470920和经度= -0.373192; 那是A点.

我需要创建一个具有另一个GPS坐标的线,也是十进制度,B点.然后,计算从A到B的线与另一个点C之间的距离(垂直).

问题是我对度数的值感到困惑.我希望得到米的结果.转换需要什么?计算这个的最终公式怎么样?

iphone gps map ios4

11
推荐指数
2
解决办法
5888
查看次数

在iOS游戏中与生活在其他地方的艺术家合作/在iOS应用程序中修改文件而无需重建

一位前同事(艺术家)和我自己(程序员)目前正在我们的空闲时间一起开发一款小游戏.既然他是不是在学习如何使用XCode中,省却了自己建立在所有感兴趣的(我不怪他,他是一个伟大的艺术家,但只有对技术的东西了解甚少),这是怎么了,我们一直在努力至今:

  • 我们共享一个Dropbox文件夹,用于存储所有游戏艺术品
  • 一旦做出足够或重要的更改,我就会创建一个构建(临时分发)并将其发送给他
  • 我们不时会聚在一起工作几个小时,也许每周一次,因为我们住在不同的城市

这在大多数情况下都可以.但是现在我们正在忙着调整内容和游戏机制.在这个开发阶段,我们的工作流程只是缓慢和"断开".每当他正在处理艺术作品时,他都必须等待我制作一个能够看到实际情境中反映的变化的构建.由于我们并不总是在同一时间工作,这有时意味着他将不得不等待几天 - 完全不满意.

所以,我想知道的......:在不需要重建游戏的情况下,允许他更改内容的最佳方式是什么?

我知道编译后无法更改iOS应用包的内容.所以这就是我到目前为止的想法:

  • 在开发过程中将内容移动到文档文件夹,以便可以通过iTunes访问它(根据相关文件的数量处理可能很尴尬)
  • 将Dropbox合并到游戏中,以便可以直接从我们的共享文件夹加载内容(实现此功能所需的额外工作,Dropbox限制为每天5000 API调用,而不处于生产状态)
  • 从Web服务器加载内容(与使用dropbox相比更加复杂)

你们有什么感想?在我们的案例中,是否有更好,更舒适的方式来实现顺畅的协作?我错过了什么吗?

非常感谢!!

编辑: 目前,我没有任何计划教我的艺术家如何制作他自己的版本.只要你不认识他,你就可以认真考虑这个选择.不过,他是一位伟大的艺术家.

所以这个问题归结为:

如何在构建后修改文件/将新文件添加到iPhone应用程序中 - 尽可能轻松,而且无需重建应用程序?

顺便说一句,这必须在开发过程中工作,所以欢迎使用脏方法.

collaboration iphone xcode ios

9
推荐指数
1
解决办法
542
查看次数

为什么ARC仅适用于iOS 4.0+?

ARC仅受iOS 4.0及更高版本支持的技术原因是什么?

我的理解是它是一个编译器功能,它只是自动插入与内存管理相关的代码,而不是要求开发人员这样做.根据我的阅读,调用本身保持不变 - 至少这是苹果过渡到ARC指南所暗示的.

因此,它不应该包含以前版本的iOS中没有出现的功能,尽管稍后介绍过,ARC确实可以与iOS 4.0一起使用.

我出于好奇而问这个问题,实际上并不需要让ARC与iOS 3.x一起工作.

memory-management objective-c ios automatic-ref-counting

9
推荐指数
1
解决办法
2488
查看次数

如何在objective-c中验证网络连接

我正在查看developer.apple.com上的Reachability示例项目,发现这是一个大型项目,只是为了验证您是否具有网络连接.

问题的第一部分是"找出设备是否可以到达3G或wifi网络所需的最低代码是多少?"

接下来应该在appDelegate(启动时)内部还是在启动的第一个View Controller内完成?

先感谢您

objective-c connectivity ios

6
推荐指数
1
解决办法
2392
查看次数

Cocoa UI和一般框架元素如何防御恶意攻击?

到目前为止,我对整体安全性考虑并不关心,因为我一直在开发促销和不加批判的iPhone应用程序.

但是,目前我正在研究Mac应用程序,因为它涉及敏感的用户信息,因此需要更多关于此事的更多信息.

虽然我知道我必须注意以物理形式(在磁盘上)保护数据,例如通过加密它,我想知道在正常使用应用程序的过程中它驻留在内存中是多么安全.

因此,我想知道:
只要它仅构建在NSTextField和Core Data等框架元素上,我的应用程序的安全性如何?

Cocoa输入元素对恶意攻击有多敏感?保护使用Core Data存储的已保存数据的最佳方法是什么?

security macos cocoa defensive-programming

6
推荐指数
1
解决办法
261
查看次数

使用UINib /指针AWOL的奇怪问题

我在使用UINib时遇到了一些奇怪的事情,尽管我怀疑真正的问题可能会被埋没在其他地方.

我的应用程序正在使用tableview,由于它们的复杂性,已在Interface Builder中准备了单元格的内容.对于新单元(与重用单元相对),使用UINib类实例化nib的内容.因为每个单元只有一个nib用于减少每次加载文件的开销,所以我cellNib在我的viewcontroller子类中添加了一个UINib作为属性,我在viewDidLoad的实现中加载了一次.

现在是奇怪的部分.一切都工作正常,tableview填充了它的数据,所有单元格都设置了nib的内容.但是当我滚动tableview时,应用程序崩溃了.
callstack给出了这个:- [NSCFNumber instantiateWithOwner:options:]:发送到实例的无法识别的选择器 显然,再次从cellNib实例化内容的消息已被发送到错误的对象.发送消息的对象不时会有所不同,因此会随机发生一些事情.

我不明白 - 为什么在加载tableview时它会工作大约10次,但是当滚动tableview时它不再工作了?

如果我每次都创建一个新的UINib实例(如下面的代码所示),那么一切正常,包括滚动.

我在哪里弄错了?我的UINib属性的指针是否会变形?如果是这样,为什么?

这是我正在使用的代码(我删除了所有数据加载和其他东西,使其更容易阅读):

@interface NTDPadViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> {

   NSManagedObjectContext *managedObjectContext;
   NSMutableArray *ntdArray;
   IBOutlet UITableView *ntdTableView;
   UINib *cellNib;

}

@property(nonatomic,retain) NSManagedObjectContext *managedObjectContext;
@property(nonatomic,retain) NSMutableArray *ntdArray;
@property(nonatomic,retain) UITableView *ntdTableView;
@property(nonatomic,retain) UINib *cellNib;

@end
Run Code Online (Sandbox Code Playgroud)

实施:

@implementation NTDPadViewController

@synthesize managedObjectContext;
@synthesize ntdArray;
@synthesize ntdTableView;
@synthesize cellNib;

-(void)viewDidLoad {

   [super viewDidLoad];
   cellNib = [UINib nibWithNibName:@"NTDCell" bundle:nil];

}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

   static NSString …
Run Code Online (Sandbox Code Playgroud)

iphone pointers objective-c nib

4
推荐指数
1
解决办法
2658
查看次数