创build一个方法来执行animation,并在目标c中使用信号量等待完成

我想创build一个方法,使用UIView的“+ animateWithDuration:animation:完成”方法来执行animation,并等待完成。 我很清楚,我可以将通常会在完成块后出现的代码放在后面,但是我想避免这种情况,因为之后会有大量的代码,包括更多的animation,这会使我留下嵌套块。 我试图用一个信号量来实现这个方法,但是我不认为这是最好的方法,尤其是因为它实际上并不工作。 任何人都可以告诉我什么是我的代码错误,和/或达到相同目标的最佳方式是什么? +(void)animateAndWaitForCompletionWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations { dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); [UIView animateWithDuration:duration animations:animations completion:^(BOOL finished) { dispatch_semaphore_signal(semaphore); }]; dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER); } 我不知道我的代码有什么问题,但是当我调用如下所示的方法时,完成块从来没有运行,我最终陷入了僵局。 [Foo animateAndWaitForCompletionWithDuration:0.5 animations:^{ //do stuff }]; – – – – – – – – – – – – – – – – – – – – – -编辑 – – […]

如何以编程方式激活ios通知设置?

我的应用程序注册这样的通知: [[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert]; 但如果我手动去通知设置,禁用一切(通知中心,警报,声音,徽章),然后卸载并重新安装应用程序(或只是重新安装,而不先卸载),我的iPhone保持旧的设置。 我如何强制重新激活这些设置重新安装?

Cydia应用程序文档文件夹未创build

我一直在研究Core Data iOS应用程序,通过苹果的“渠道” – iOS模拟器和Xcode安装完美工作,但是当我尝试手动将其安装到设备上时,应用程序崩溃。 我的主要目标是把应用程序放在Cydia上。 为Cydia准备一个应用程序的指南我阅读这篇文章,我在底部说 Appstore应用程序具有由安装过程创build的“文档”文件夹。 越狱应用程序不。 这是由应用程序创build自己的文件夹。 如果您需要这种types的文件夹,则必须在applicationDidFinishLaunching函数中使用简单的mkdir命令来创build此文件夹。 只需添加一个简单的函数:mkdir(“/ var / mobile / Library / YOURAPPNAME”,0755); 如果文件夹已经存在,没有任何伤害。 您希望这样做,因为安装过程以root用户身份运行,应用程序以用户移动方式运行。 如果Cydia为你做这个,那么这个文件夹会有不正确的权限。 我不太了解核心数据的工作原理,但是我知道核心数据“数据库”存储在“文档”文件夹中,现在我相信这是我的应用崩溃的原因。 mkdir函数在创build“文档”文件夹时不起作用。 我将如何去创build一个Documents文件夹,以及如何让它与Core Data一起工作,确保数据库从我创build的这个文件夹中加载? 提前致谢

如何发送电子邮件,短信通知从iPhone到蓝牙LE设备?

什么服务/configuration文件,我将不得不使用发送电子邮件,短信通知从iPhone到蓝牙LE device.Is有任何示例代码?

拉伸和字距型,不能在带有@IBDesignable的Storyboard中工作

这是一个跟踪/拉伸字体的IBLabel 。 它在构build中完美地工作。 但是这个改变不会在Storyboard中显示。 // UILabel, but you can set // the tracking (that's the overall amount of space between all letters) // and streching (actually squeeze or stretch the letters horizontally) // Note: it's very common that typographers need you to adjust these. import UIKit @IBDesignable class StyledLabel: UILabel { @IBInspectable var tracking:CGFloat = […]

Swift将string公式转化为实际计算

我有几个公式存储在一个Plist,如A * B。我想知道如何可以把这个公式作为一个string存储在一个Plist中,并将其用作一个实际的计算公式。 我尝试着把公式写成\(A)* \(B),然后设置A和B,然后尝试使用这个公式,但是它不起作用。 有什么build议么? 例 let A = 5 let B = 2 println (formula) 实际上打印出“\(A)* \(B)”

无法访问XCTestCase对象中的AppDelegate(或任何引用它的东西)

我试图在我的swift iOS应用程序上开始unit testing,但已经跑到总路障。 我似乎无法访问任何使用我的appDelegate。 我的appDelegate有一个UserController对象,它存储和pipe理login的用户和它的各种数据。 为了简化调用userController我创build了一个NSObject的自定义子类,这是我的所有模型类的子类。 它有它 let userController : UserController = (UIApplication.sharedApplication().delegate as! AppDelegate).userController 每当我尝试和testing一个子类化模型时,这行会导致一个SIGABRTexception。 无法将types“MyProject.AppDelegate”的值转换为“MyProjectionTests.AppDelegate”。 我试图从testing目标中删除AppDelegate,但是这样就给我AppDelegate是未定义的。 我已经尝试添加import MyProject到testing文件的顶部,但也没有工作。 我看到了另外两个解决scheme: 使应用程序委托function私人 – 我真的不喜欢做这样的事情。 如果我不得不为了testing而更改我的代码,那么testing的意义何在? 实现一个testing应用程序的委托,并使用它 – 如果我不testing项目中的什么,testing的重点又是什么。 有没有人有办法解决吗。 Swift的unit testing被certificate是令人头痛的事情,因为RSpec在rails上有多容易

如何更新核心数据中的现有对象?

我已经从一个.csv文件预加载数据到coredata。 我以下面的方式获取数据 var places:[Places] = [] 在viewDidLoad : if let managedObjectContext = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext { let fetchRequest = NSFetchRequest(entityName: "Places") do{ places = try managedObjectContext.executeFetchRequest(fetchRequest) as! [Places] } catch let error as NSError{ print("Failed to retrieve record: \(error.localizedDescription)") } } 在数据中有一个属性isFavorite,它的初始值为false。 我改变button点击isFavorite的价值。 我想保存用户所做的更改。 我怎样才能使这个改变持久? 这是我的button动作 @IBAction func addToFavourites(sender: AnyObject) { cell = tableView.cellForRowAtIndexPath(NSIndexPath(forRow: sender.tag, […]

Swift是否可以从一个轻量级的通用Objective-c类inheritance?

我有两个类,基类在Obj-c中,子类在Swift中。 Obj-c类使用新的XCode 7的轻量级通用特性,定义如下: @interface BaseController<T: SFObject *> : UIViewController @property(nonatomic, strong) T model; @end 这对Obj-c子类很好。 现在对于Swift,如果我像平常一样定义genericstypes,我会得到以下错误: 无法专门化非genericstypes“BaseObjcController”。 我的第二堂课定义如下: class SwiftController: BaseObjcController<SFUser> { } 任何帮助,将不胜感激。 谢谢。

对象层次结构在Swift中导致内存泄漏

我已经能够提炼出一个我写的应用程序中出现的问题,并以一个简单的例子进行了转载。 鉴于这些类: class Thing { var name:String = "" var price:Double = 0.0 var changed:Double = 0.0 var percentChanged:Double = 0.0 } class TestUIViewController: UIViewController { } class ViewController: TestUIViewController { var thing:Thing? @IBAction func clicked(_ sender: AnyObject) { self.thing = Thing() } } 我用一个button创build了一个UIView,当按下时,一个事物被实例化。 随着仪器分析器,我可以看到发生内存泄漏。 但是,如果ViewController类从UIViewController扩展,则没有问题。 这些都是从一个快速testing应用程序中复制出来的,所以在这里我没有其他的外力可以想到。 这里是示例代码 – https://www.dropbox.com/s/ooqh77lhpzbvpv1/ArcTest.zip?dl=0