我得到一个VOIP套接字在iOS应用程序的后台运行。 我的连接工作正常,但当我的应用程序进入后台时,它不会醒来。 如果我打开应用程序,它会响应它在睡觉时收到的任何消息。 我build立了这样的stream: CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, (CFStringRef) @"test.iusealocaltestserver.com", 5060, &myReadStream, &myWriteStream); CFReadStreamSetProperty ( myReadStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP ); CFSocketNativeHandle native; CFDataRef nativeProp = CFReadStreamCopyProperty(myReadStream, kCFStreamPropertySocketNativeHandle); CFDataGetBytes(nativeProp, CFRangeMake(0, CFDataGetLength(nativeProp)), (UInt8 *)&native); CFRelease(nativeProp); CFSocketRef theSocket = CFSocketCreateWithNative(kCFAllocatorDefault, native, 0, NULL, NULL); CFSocketGetContext(theSocket,&theContext); CFOptionFlags readStreamEvents = kCFStreamEventHasBytesAvailable | kCFStreamEventErrorOccurred | kCFStreamEventEndEncountered | kCFStreamEventOpenCompleted; CFReadStreamSetClient(myReadStream, readStreamEvents, (CFReadStreamClientCallBack)&MyCFReadStreamCallback, (CFStreamClientContext *)(&theContext)); CFReadStreamScheduleWithRunLoop(myReadStream, CFRunLoopGetCurrent(), […]
我通过将目标iOS保持为4来为我的客户做了一个应用程序。 但由于应用程序仍然没有提交给苹果商店,我的客户计划升级它的iOS 5.0。 为此,我从Apple阅读指南并发现:“只有用户生成的数据或者不能被应用程序重新创build的数据应该存储在/ Documents目录中,其余部分应该存储到/ Library / Caches目录中” 在我的应用程序中,我正在使用非易失性产品的应用内购买服务器模型。 为此,我将所有下载的数据(基本上是书籍或杂志)存储到Documents目录中。 数据库也存在于包含下载产品细节的相同目录中。 我的问题是, 1.我是否必须更改我的代码以将下载的数据存储到Library / Caches目录而不是Documents目录? 2.我的数据库文件应放在哪里(文档或caching)? 如果我把它的产品放在caching中,那么我也必须改变检索的逻辑,因为考虑到如果logging存在于数据库中,就不需要改变文件的存在,当用户点击时它就直接打开该杂志。 请在这个问题上指导我。 提前致谢。 更新: 我正在更新这个对于那些仍然不确定这个问题的人。 使用接受答案的指导原则,我已经在我的两个应用程序中实现了这一点,并将其提交给Apple Store。 两者都在审查中获得批准。 这可能会促使在接受的答案中提出的解决scheme是正确的。
在我接受的一个项目中,原作者select使用objc_setAssociatedObject() ,我不能100%清楚它做了什么或者他们为什么决定使用它。 我决定查阅,不幸的是,这些文件对其目的不是很明确。 objc_setAssociatedObject 使用给定的键和关联策略设置给定对象的关联值。 void objc_setAssociatedObject(id object, void *key, id value, objc_AssociationPolicy policy) 参数 object 关联的源对象。 key 协会的关键。 value 与对象的键关联的值。 通过零来清除现有的关联。 policy 协会的政策。 有关可能的值,请参阅“关联对象行为”。 那么这个函数究竟做了什么,在什么情况下应该使用它呢? 阅读答案后编辑 那么下面的代码有什么意义呢? Device *device = [self.list objectAtIndex:[indexPath row]]; DeviceViewController *next = [[DeviceViewController alloc] initWithController:self.controller device:device item:self.rootVC.selectedItem]; objc_setAssociatedObject(device, &kDeviceControllerKey, next, OBJC_ASSOCIATION_RETAIN); 如果它已经是一个实例variables,那么将设备与视图控制器关联起来有什么意义呢?
有人可以给我看一个Cocoa Obj-C对象的例子,有一个自定义通知,如何触发它,订阅它,并处理它?
我正在使用XCode 8并使用iOS 10.2 Beta进行testing。 我已经添加了照片,PhotosUI和MobileCoreServices框架来投影。 非常简单的代码: #import <Photos/Photos.h> #import <PhotosUI/PhotosUI.h> #import <MobileCoreServices/MobileCoreServices.h> @interface ViewController : UIViewController <UIImagePickerControllerDelegate, UINavigationControllerDelegate, PHLivePhotoViewDelegate> @property (strong, nonatomic) IBOutlet UIImageView *imageview; @end 和执行: – (IBAction)grab:(UIButton *)sender{ UIImagePickerController *picker = [[UIImagePickerController alloc]init]; picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; picker.allowsEditing = NO; picker.delegate = self; // make sure we include Live Photos (otherwise we'll only get […]
我的项目正在使用AFNetworking。 https://github.com/AFNetworking/AFNetworking 如何拨打暂停? 自动柜员机没有互联网连接的故障块是不会触发2分钟左右的感觉。 等待长…
我正在使用以下方法手动创build数据结构: NSDictionary* league1 = [[NSDictionary alloc] initWithObjectsAndKeys: @"Barclays Premier League", @"name", @"Premier League", @"shortname", @"101", @"id", nil]; NSDictionary* league2 = [[NSDictionary alloc] initWithObjectsAndKeys: @"Coca-Cola Championship", @"name", @"Championship", @"shortname", @"102", @"id", nil]; NSDictionary* league3 = [[NSDictionary alloc] initWithObjectsAndKeys: @"Scottish Premier League", @"name", @"SPL", @"shortname", @"201", @"id", nil]; NSDictionary* league4 = [[NSDictionary alloc] initWithObjectsAndKeys: @"Champions League", @"name", […]
我简单的目标是淡入淡出隐藏和显示function。 Button.hidden = YES; 很简单。 但是,它可能会淡出而不是消失? 这样看起来相当不专业。
我正在开发蓝牙低功耗概念项目。 我正在获取1到100之间的RSSI值。移动标签时,RSSI值随着外围设备离开iPhone而增加,并随着距离越来越近而减小。 任何人都可以帮助我根据RSSI值得到iPhone和蓝牙标签之间的确切距离吗? 有没有可用的公式? 我正在通过这个蓝牙获得设备的RSSI值低能量委托方法: – (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
我将存储一些string(也许10-20)。 我不确定是否应该使用NSUserDefaults来保存它们,或者写出来给plist。 什么被认为是最佳实践? NSUserDefaults似乎是更less的代码行,因此更快实施。 我想补充一点,这些string值将被用户添加/删除。