草庐IT

objective-c - 如何对 NSCoding 进行单元测试?

我有一个iOS应用程序,其中使用NSCoding保存数据,更准确地说是使用NSKeyedArchiver。此应用程序已在AppStore上可用。我正在开发应用程序的第2版,数据模型应该会发生变化。所以我需要处理数据模型迁移。我希望单元测试涵盖它。在我的测试中,我想使用旧数据模型动态生成持久化数据,启动迁移并查看是否一切顺利。目前,归档一个对象是这样的:MyDataModelObject*object=....NSKeyedArchiver*archiver=[[NSKeyedArchiveralloc]initForWritingWithMutableData:data];[archi

ios - 游戏中心问题 : iTunes Connect? 配置文件?还有别的吗?

我遇到了一些非常令人困惑的GameCenter问题。我的应用仅在iOS6及更高版本上运行,并且我一直在使用标准代码通过GameCenter进行身份验证:GKLocalPlayer*localPlayer=[GKLocalPlayerlocalPlayer];localPlayer.authenticateHandler=^(UIViewController*viewController,NSError*error){//Respondtoauthentication(failureorsuccess)here!}使用此代码,该应用程序在开发期间和~10-15个beta测试人员在临时发行

ios - ARC 不允许将非 Objective-C 指针类型 void* 隐式转换为 NSString*__strong*

迁移到ARC时出现上述错误。这是代码:staticNSString*cashBalanceKeyPath=@"test";...[xxxforKeyPath:cashBalanceKeyPathoptions:NSKeyValueObservingOptionNewcontext:&cashBalanceKeyPath];...-(void)observeValueForKeyPath:(NSString*)keyPathofObject:(id)objectchange:(NSDictionary*)changecontext:(void*)context{if(&cashBalan

iphone - 无法保存到数据存储 : The operation couldn’t be completed.(Cocoa 错误 133020。)

我正在开发相当复杂的应用程序,它在iphone和网络服务器之间具有巨大的同步过程。我在添加记录方面没有任何问题,直到我在单独的线程中运行同步程序,它会更新服务器上的数据,并将它们发送回iphone。但是在此过程之后,插入新数据会导致错误,例如:2011-01-0712:49:10.722App[1987:207]Failedtosavetodatastore:Theoperationcouldn’tbecompleted.(Cocoaerror133020.)2011-01-0712:49:10.724App[1987:207]{conflictList=("NSMergeConfli

cocoa-touch - View 逻辑应该放在 UIView 中还是(如果适用)它的 UIViewController 中?

我最近发现UIView应该只有UIViewController填充整个窗口(或者由另一个UIViewController管理,例如UINavigationController或UISplitViewController)。此引文来自UIViewController的文档:Youshouldnotuseviewcontrollerstomanageviewsthatfillonlyapartoftheirwindow—thatis,onlypartoftheareadefinedbytheapplicationcontentrectangle.Ifyouwanttohaveaninter

ios - Objective-C 为对象的每个方法添加功能

我想为objective-c中的对象构建一个小型插件系统。现在我想动态地(在运行时)向对象中的每个可用函数添加一行代码。我试过运行时库,但还没有找到解决方案。到目前为止我尝试过的是:id(^impyBlock)(id,id,...)=^(idself_,idarguments,...){//Mycustomcodeforeveryfunctionhereid(*func)(__strongid,SEL,...)=(id(*)(__strongid,SEL,...))imp;returnfunc(obj,s,arguments);};id(*impyFunct)(id,SEL,...)=

ios - 在 Cocoa Touch 中实现去抖动/合并模式,例如 `layoutSubviews`

许多CocoaTouch类利用合并事件的设计模式。例如,UIViews有一个方法setNeedsLayout,它会在不久的将来调用layoutSubviews。这在许多属性影响布局的情况下特别有用。在每个属性的setter中,您可以调用[selfsetNeedsLayout]这将确保布局将被更新,但如果同时更改多个属性甚至会阻止对布局的许多(可能昂贵的)更新如果在运行循环的一次迭代中多次修改单个属性。其他昂贵的操作,如setNeedsDisplay和drawRect:这对方法遵循相同的模式。实现这种模式的最佳方法是什么?具体来说,我想将一些依赖属性绑定(bind)到一个昂贵的方法,如果

ios - 在 Cocoa 中以编程方式创建 NSView

我习惯于为iOS编程,并且我已经非常习惯于UIViewController。现在,我正在创建一个OSX应用程序,我有一些关于最佳实践的一般性问题。在UIViewController中,我通常在-(void)viewDidLoad方法中设置我的View-我实际上并没有创建自定义UIView对于UIViewController除非它真的需要-所以UIViewController将View添加到它自己的View,删除它们,为它们设置动画等等-首先,这是好的做法吗?对于我的主要问题-OSX中的最佳实践是什么?我喜欢以编程方式创建界面,并且更喜欢这种方式。如果我说创建一个新的自定义窗口并想要管理

ios - 如果在 IB 中使用自动布局设置 View ,如果您尝试以编程方式更改其框架,会发生什么情况?

我开始帮助的一个项目之前没有使用自动布局,我正在更新它以使用自动布局和大小类。整个应用程序中有大量的框架操作代码(例如,直接设置框架而不是更改约束常量),我想知道这会如何影响使用自动布局约束设置的View。我正在努力消除代码的帧更改部分,并将其更改为在需要时更新约束常量,但由于我还不是100%熟悉每一段代码的工作原理,所以它会有助于更好地了解自动布局和编码框架更改如何相互影响,以便如果View在运行时未正确显示,我可以更好地确定它是我设置的东西还是某个地方的一段旧代码需要被发现和更新。 最佳答案 非常简单。您只需要了解什么是自动布局

cocoa-touch - 在 iOS 中淡入异步加载的图像

我正在尝试找到一种异步加载图像的方法,而不是让图像“只出现”在UIImageView中,而是让它们淡入,类似于在iPad上的YouTube应用程序中完成的方式。有人知道我该怎么做吗?我试过四处寻找做过类似事情的人,但运气不佳,我不确定从哪里开始。 最佳答案 我也必须推出自己的解决方案。我从thistutorialforasyncloadingofUIImageViews开始(虽然它讨论的是表格View中的图像,但相同的原则通常适用于ImageView。就淡入淡出部分而言,该代码块看起来像这样:imageView.alpha=0;[U