Tag: cocoa

我在哪里可以find一个关于iPhone / Objective-Cmultithreading的好教程?

我刚刚开始使用multithreading,并正在寻找一个很好的解释。 我不确定multithreading在Mac和iPhone上的工作方式是否存在差异。 什么是与示例代码教程的良好链接?

核心数据-existingObjectWithID:错误:导致错误133000

我的应用程序使用核心数据(有一些魔法logging的帮助),并使用NSOperation相当严重的multithreading。 当然,我非常小心只能在线程/操作之间传递NSManagedObjectID 。 现在,为了回到操作中相应的托pipe对象,我使用-existingObjectWithID:error: : Collection *owner = (Collection *)[localContext existingObjectWithID:self.containerId error:&error]; 但是我回来是零和error说这是一个错误#13300: NSManagedObjectReferentialIntegrityError 。 以下是关于这个错误的文档说明: NSManagedObjectReferentialIntegrityError Error code to denote an attempt to fire a fault pointing to an object that does not exist. The store is accessible, but the object corresponding to the fault cannot be found. 在我的情况下,这是不正确的:这个对象是存在的。 实际上,如果我用NSFetchRequest迭代那个Collection实体的所有实例,我发现它在其中,它的NSManagedObjectID正是我传递给-existingObjectWithID:error: 而且,如果我使用-objectWithID:取而代之,我得到一个正确的对象就好了。 所以有一些我错过了。 以下是一些其他意见/问题: “不存在的客体”:这句话中“存在”的含义是什么? […]

Mac App Store收据validation码?

想知道是否有人有新的Mac App Store的收据validation教程或工作代码? 关于迄今为止唯一可以find的引用是苹果公司关于这个主题的恒星文档和一个编译但是没有大量内联注释的开源项目,所以除非你是一个encryption专家,否则很难理解。 苹果文档仅适用于注册开发者: https://developer.apple.com/devcenter/mac/documents/validating.html Roddi的ValidateStoreReceipt(看起来很有希望,但是稀疏地logging): https://github.com/roddi/ValidateStoreReceipt 也想知道为什么苹果不只是提供工作代码进行validation? 还有其他的好的参考吗?

ARC下归零弱引用的集合

我怎样才能得到一个数组零引用下弱引用 ? 我不希望数组保留对象。 而且我希望数组元素可以在释放时自行删除,或者将这些条目设置为nil。 同样的,我怎样才能用字典呢? 我不希望字典保留这些值。 再次,我希望字典元素或者在值被释放时自行移除,或者将值设置为零。 (我需要保留这些唯一标识符的键,至less在取消分配相应的值之前)。 这两个问题包含了类似的理由: 对ARC下的对象的弱引用的NSArray 有一个不保留的id对象列表? 但是也不要求引用归零 。 根据文档,NSPointerArray和NSHashMap都不支持ARC下的弱引用。 NSValue的nonretainedObjectValue也不会工作,因为它是非零。 我看到的唯一的解决scheme是创build我自己的 NSValue类包装类(weak)属性, 这个答案提到,接近尾声 。 有没有更好的方法,我没有看到? 我正在开发OS X 10.7和iOS 6.0。

如何在UIBarButtonItem中将UIGestureRecognizer添加到iPad应用程序中常见的撤销/重做UIPopoverControllerscheme中?

问题 在我的iPad应用程序中, 只有在按住事件之后,才能将popup窗口附加到button栏项目。 但是这似乎是撤销/重做的标准。 其他应用程序如何做到这一点? 背景 我有我的UIKit(iPad)应用程序工具栏中的撤消button(UIBarButtonSystemItemUndo)。 当我按下撤消button,它会触发它的撤消操作,并正确执行。 然而,在iPad上撤销/重做的“标准UE约定”是按下撤销执行撤消操作,但按住button显示一个popup式控制器,用户在撤销控制器之前select“撤消”或“重做”。 使用presentPopoverFromBarButtonItem来附加popover控制器的正常方法是:我可以很容易地configuration它。 为了让这个只在按下之后才显示,我们必须设置一个视图来响应“长按”手势事件,如下面的代码片段所示: UILongPressGestureRecognizer *longPressOnUndoGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPressOnUndoGesture:)]; //Broken because there is no customView in a UIBarButtonSystemItemUndo item [self.undoButtonItem.customView addGestureRecognizer:longPressOnUndoGesture]; [longPressOnUndoGesture release]; 有了这个,在view上按下并按住handleLongPressOnUndoGesture:方法之后,将调用此方法,我将configuration并显示撤销/重做的popup窗口。 到现在为止还挺好。 这个问题是没有意见的 。 self.undoButtonItem是一个UIButtonBarItem,而不是一个视图。 可能的解决scheme 1)[理想] 将手势识别器附加到button栏项目 。 可以将一个手势识别器附加到一个视图,但UIButtonBarItem不是一个视图。 它具有.customView的属性,但是当buttonbaritem是标准系统types(在这种情况下)时,该属性为零。 2) 使用另一个视图 。 我可以使用UIToolbar,但是这需要进行一些奇怪的命中testing,并且如果可能的话,还是可以的。 没有其他可供select的使用方法,我可以想到。 3) 使用customView属性 。 像UIBarButtonSystemItemUndo这样的标准types没有customView(它是零)。 设置customView会删除它需要的标准内容。 这相当于重新实现了UIBarButtonSystemItemUndo的所有外观和function,如果可能的话。 题 […]

我在哪里可以find与Cocoa的NSEvent类一起使用的关键代码列表?

我正在寻找可用的可用密钥代码的完整列表,可用于Cocoa的NSEvent类。 NSEvent类有一个keyCode属性,它被定义为unsigned short 。 下面的代码放置在适当的UI对象中时,会在按键时回显键代码: – (void)keyDown:(NSEvent *)theEvent { NSLog(@"%d", [theEvent keyCode]); } 从这段代码,我可以很容易地看到哪些代码匹配某些键,但我想find一个官方文档列出所有这些。 我希望苹果有一个头文件,看起来像这样: enum { … NSKeyCodeLeftArrow = 123, NSKeyCodeRightArrow = 124, … }; 但如果有的话,我还没有find。

Objective-C中正式和非正式协议有什么区别?

Objective-C中正式和非正式协议有什么区别?

使NSRunLoop等待标志被设置的最佳方法?

在NSRunLoop的Apple文档中,有一些示例代码演示了在等待一个标志被其他东西设置的同时暂停执行。 BOOL shouldKeepRunning = YES; // global NSRunLoop *theRL = [NSRunLoop currentRunLoop]; while (shouldKeepRunning && [theRL runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]); 我一直在使用它,它的工作原理,但在调查性能问题,我跟踪到这段代码。 我使用几乎完全相同的一段代码(只是标志的名称是不同的:),如果我在标志被设置(在另一种方法),然后在while()之后的一行后放一个NSLog上线是几秒钟之间的两个日志语句之间看似随机的等待。 延迟似乎没有在慢或更快的机器上有所不同,但从运行到运行至less有几秒钟和多达10秒。 我已经用下面的代码解决了这个问题,但是原来的代码不起作用。 NSDate *loopUntil = [NSDate dateWithTimeIntervalSinceNow:0.1]; while (webViewIsLoading && [[NSRunLoop currentRunLoop] runMode: NSDefaultRunLoopMode beforeDate:loopUntil]) loopUntil = [NSDate dateWithTimeIntervalSinceNow:0.1]; 使用此代码,设置标志和while循环之后的日志语句现在始终小于0.1秒。 任何人有任何想法,为什么原始代码展示这种行为

如何以编程方式设置特定UITextField的返回键?

我不敢相信这个问题还没有被问到,但我一直无法find它,所以这是我的假设。 我已经使用Interface Builder创build了自定义的UITableViewCel l子类。 这些包含一个UILabel和一个UITextField ,用于我们的login屏幕。 在第一个UITextField ,我想要键盘键说Next 。 但是,在第二个UITextField ,我想让它说“完成”。 如何以编程方式更改键盘上Return Key的值? 我无法使用Interface Builder ,因为这会使两个键都显示为Done 。 谢谢!

如何在没有Interface Builder的情况下创buildCocoa接口?

我宁愿以编程方式创build我的接口。 看起来好像苹果开发者的所有文档都假设你正在使用Interface Builder。 是否有可能以编程方式创build这些接口,如果是的话,我从哪里开始学习如何做到这一点 我认为这个相关的文件,如果可能的话,将在本节: http : //developer.apple.com/referencelibrary/Cocoa/idxUserExperience-date.html