Tag: objective c

两个NSDates之间的天数

我怎么能确定两个NSDate值之间的天数(同时考虑到时间)? NSDate值以[NSDate date]forms出现。 具体来说,当用户在我的iPhone应用程序中进入非活动状态时,我存储以下值: exitDate = [NSDate date]; 当他们打开应用程序时,我得到当前时间: NSDate *now = [NSDate date]; 现在我想实现以下内容: -(int)numberOfDaysBetweenStartDate:exitDate andEndDate:now

定期iOS背景位置更新

我正在写一个应用程序,需要高精度和低频率的背景位置更新。 该解决scheme似乎是一个后台NSTimer任务,启动位置pipe理器的更新,然后立即closures。 这个问题之前已经被问到: 如何在iOS应用程序中每隔n分钟更新一次后台位置? 应用程序转到后台后,每n分钟获取一次用户位置 iOS不是典型的后台位置跟踪计时器问题 具有“位置”后台模式的iOS长时间运行后台计时器 基于位置跟踪的iOS全职后台服务 但我还没有得到一个最低工作的例子 。 在对上述接受的答案进行了各种排列之后,我总结了一个起点。 进入背景: – (void)applicationDidEnterBackground:(UIApplication *)application { self.bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{ NSLog(@"ending background task"); [[UIApplication sharedApplication] endBackgroundTask:self.bgTask]; self.bgTask = UIBackgroundTaskInvalid; }]; self.timer = [NSTimer scheduledTimerWithTimeInterval:60 target:self.locationManager selector:@selector(startUpdatingLocation) userInfo:nil repeats:YES]; } 和委托方法: – (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { NSLog(@"%@", newLocation); NSLog(@"background time: %f", [UIApplication […]

使用alloc init而不是new

学习Objective-C和阅读示例代码,我注意到对象通常是使用这种方法创build的: SomeObject *myObject = [[SomeObject alloc] init]; 代替: SomeObject *myObject = [SomeObject new]; 有没有这个原因,我已经读过,他们是相同的?

Xcode 4.4发行说明中提到的“Objective-C Literals”有哪些细节?

我正在阅读Xcode 4.4的发行说明,并注意到这一点: LLVM 4.0编译器 Xcode现在包含Apple LLVM Compiler版本4.0,包括以下newObjective-C语言特性: – Objective-C文字:为NSArray,NSDictionary和NSNumber创build文字,就像NSString的文字一样 我对这个function很感兴趣。 我不完全清楚NSString文字是如何工作的,以及如何在NSArray , NSDictionary和NSNumber上使用它们。 有什么细节?

为什么我不应该在init / dealloc中使用Objective C 2.0访问器?

在@ mmalc对这个问题 的 回应中 ,他说:“一般来说,你不应该在dealloc(或init)中使用accessor方法。 为什么mmalc这样说? 我能想到的唯一真正的原因是性能,并避免@dynamic setter的未知副作用。 讨论?

检测特定的iPhone / iPod touch型号

可能重复: 用iPhone SDK确定设备(iPhone,iPod Touch) 我正在制作一款利用iPhone的点对点蓝牙function(可能是iPod touch第二代)的游戏。 但是,要阻止用户尝试在iPod 1st Gen和iPhone 2G上玩多人游戏,我需要检查特定的设备型号。 [[UIDevice currentDevice]模式]只会告诉我该设备是“iPhone”还是“iPod touch”。 有没有办法检查具体的设备型号,如:“iPhone 3GS”,“iPod touch第一代”或什么的。 编辑: 有一个UIDevice的类别(我认为它是由Erica Sadun创build的,我不赞赏它)使用下面的代码来获取特定的设备模型。 您可以在这里find整个类别以及其他有用的东西: https : //github.com/erica/uidevice-extension #include <sys/types.h> #include <sys/sysctl.h> @implementation UIDevice (Hardware) /* Platforms iPhone1,1 -> iPhone 1G iPhone1,2 -> iPhone 3G iPod1,1 -> iPod touch 1G iPod2,1 -> iPod touch 2G */ – (NSString *) platform […]

了解Cocoa和Objective-C的引用计数

我只是开始看Objective-C和Cocoa,以期玩iPhone SDK。 我对C的malloc和free概念很合适,但Cocoa的引用计数scheme让我颇为困惑。 一旦你了解它,我就会被告知它非常优雅,但是我还没有完成。 如何release , retain和autorelease工作以及有关使用约定是什么? (或者说失败了,你读了什么帮助你得到了它?)

在Objective-C中为类定义私有方法的最佳方法

我刚刚开始编程Objective-C,并且拥有Java的背景,不知道编写Objective-C程序的人是如何处理私有方法的。 我知道可能有几个约定和习惯,并将这个问题作为人们在Objective-C中处理私有方法的最佳技术的集合体来思考。 发布时请包括您的方法的论点。 为什么这是好的? 它有哪些缺点(你知道的)以及你如何处理它们? 至于我目前的发现。 可以使用MyClass.m文件中定义的类别 [例如MyClass(Private)]对私有方法进行分组。 这种方法有两个问题: Xcode(和编译器?)不会检查是否在相应的@implementation块中定义了私有类别中的所有方法 你必须把@interface声明你的私人类别在MyClass.m文件的开头,否则Xcode会抱怨一个消息,比如“self可能不回应消息”privateFoo“。 第一个问题可以用空类别 [例如MyClass()]解决。 第二个困扰我很多。 我希望在文件末尾附近实现(定义)私有方法; 我不知道这是可能的。

如何隐藏UINavigationBar 1px的底线

我有一个应用程序,有时需要其导航栏融入内容。 有谁知道如何摆脱或改变这个讨厌的小酒吧的颜色? 在下面的图像我有 – 我正在谈论这个1px高度线下面的“根视图控制器”

在UITextView占位符

我正在做一个使用UITextView的应用程序。 现在我想让UITextView拥有一个类似于你可以为UITextField设置的占位符。 有谁知道如何做到这一点?