在objective-c / cocoa中抛出exception的最好方法是什么?
Cocoa / Cocoa Touch中的许多类都有NS前缀。 这是什么意思?
如何testingObjective C中的NSString是否为空?
我试图find一个Objective-C对象的大小。 我正在使用类似于: NSLog(@"sizeof myObject: %ld", sizeof(*myObject)); 这只是给了我指针的大小。 我究竟做错了什么?
我正在编写使用新的Xcode 7 UItestingfunction的UItesting用例。 在我的应用程序的某个时候,我要求用户许可摄像头访问和推送通知。 因此,两个iOSpopup窗口将显示: "MyApp Would Like to Access the Camera"popup窗口和"MyApp Would Like to Send You Notifications"popup。 我想我的testing,以消除这两个popup窗口。 UIlogging为我生成了以下代码: [app.alerts[@"cameraAccessTitle"].collectionViews.buttons[@"OK"] tap]; 但是, [app.alerts[@"cameraAccessTitle"] exists]parsing为false,上面的代码生成一个错误: Assertion Failure: UI Testing Failure – Failure getting refresh snapshot Error Domain=XCTestManagerErrorDomain Code=13 "Error copying attributes -25202" 。 那么在testing中解除一堆系统警报的最好方法是什么? 系统popup窗口中断我的应用程序stream程,并立即失败我的正常UItesting用例。 事实上,有关如何绕过系统警报的任何build议,所以我可以恢复testing通常的stream程,赞赏。 这个问题可能与这个SOpost有关,也没有答案: Xcode7 | Xcode UItesting| 如何处理位置服务警报? 提前致谢。
是否有可能在UIAlertView中添加图像,如显示来自plist文件的图像?
我已经从几个来源(stackoverflow.com,cocoa-dev,文档,博客等)了解到,在init和dealloc方法中使用访问器和设置(foo,setFoo :)是“错误的”。 我明白,如果你这样做的话,有一个遥远的可能性混淆了观察财产的其他物体。 ( 这里给出一个简单的例子) 不过,我不得不说,我不同意这种做法,原因如下: 新的Objective-C运行时(iPhone上的那个和10.5中的64位运行时)允许您声明属性而不声明相应的ivar。 例如,下面的类将在10.5或iPhone(设备,而不是模拟器)上编译得很好: @interface Foo : NSObject { } @property (retain) id someObject; @end @implementation Foo @synthesize someObject; @end 理解上面是一个完全有效的Objective-C类,比方说,我决定编写一个初始化程序,并为了内存pipe理的目的,使用dealloc方法(因为GC在iPhone上不可用)。 我读过的关于初始化和释放的所有东西都会导致我写下面两个方法: – (id) init { if (self = [super init]) { //initialize the value of someObject to nil [self setSomeObject:nil]; } return self; } – (void) dealloc { //setting someObject […]
在objective-c中,以下代码使用date API生成UTCdate时间信息。 NSDate *currentUTCDate = [NSDate date] 然而在Swift中, let date = NSDate.date() 导致当地date和时间。 我有两个问题: 我如何获得UTC时间和本地时间(以及date给出本地时间)在NSDate对象。 我怎么能从NSDate对象获得秒的精度。 编辑1:感谢所有的投入,但我不是在寻找NSDateFormatter对象或string值。 我只是在寻找NSDate对象(但是我们做了它们,但这是要求)。 见第1点。
我使用NSUserDefaults字典存储基本信息,如高分等,以便当用户closures应用程序数据不会丢失。 反正我用: NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 存储数据。 如果我想存储一个新的高分例如,那么我会做: [prefs setInteger:1023 forKey:@"highScore"]; [prefs synchronize]; //this is needed in case the app is closed. 后来如果我想检索高分我会做: [prefs integerForKey:@"highScore"]; 无论如何,重点是我存储了很多其他的东西,因为NSUserDefaults enable您能够存储booleans , integers , objects等。我需要执行什么方法来删除所有的密钥,以便NSUserDefaults变得像我第一次启动应用程序的时候? 我正在寻找像这样的东西: NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; [prefs deleteAllKeysAndObjectsInTheDictionary]; 或者也许有一种方法获得所有的密钥,我必须循环通过每个对象,但我不知道如何删除它们。 编辑: 我努力了 : NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; [NSUserDefaults resetStandardUserDefaults]; [prefs synchronize]; 我仍然能够获得高分….
给定一个NSArray的NSDictionary对象(包含相似的对象和键)是否可以写一个指定的键的数组执行映射? 例如,在Ruby中可以通过以下方式完成: array.map(&:name)