Tag: 马科斯

NSOperation属性重写(isExecuting / isFinished)

我在Swift中NSOperation ,并且需要重写isExecuting和isFinished属性,因为我重写了start方法。 我遇到的问题是如何保留键值观察(KVO),同时也能够覆盖这些属性。 通常在Obj-C中,这将是相当容易重新声明类扩展JSONOperation ()定义中的readwrite属性。 但是,我并没有在Swift中看到这个function。 例: class JSONOperation : NSOperation, NSURLConnectionDelegate { var executing : Bool { get { return super.executing } set { super.executing } // ERROR: readonly in the superclass } // Starts the asynchronous NSURLConnection on the main thread override func start() { self.willChangeValueForKey("isExecuting") self.executing = true self.didChangeValueForKey("isExecuting") NSOperationQueue.mainQueue().addOperationWithBlock( { self.connection […]

在斯威夫特匀场

根据苹果工程师伊丽莎白·里德“匀场”是当你使用条件编译来重新使用iOS和OS X之间的代码。例如: #if TARGET_OS_IPHONE @import UIKit; #define BaseView UIView #else @import AppKit; #define BaseView NSView #endif @interface MyView : BaseView @end 在WWDC 2014会议中, 在iOS和OS X之间共享代码,她还指出: 如果你从字面上翻译你将用Objective-C来填充的话,这将不能在Swift中编译。 有很多方法可以在Swift中填充你的代码。 但是它比我们在Objective-C中可以使用的基本条件编译要复杂得多。 那么,哪种方法可以在Swift中“填充代码”呢?

Xcode – 免费清除设备文件夹?

我正在删除一些文件夹和文件,以便在驱动器上占用更多的空间。 我知道在路上: ~/Library/Developer/CoreSimulator/Devices/ 每个模拟器和每个版本都有文件夹。 这个文件夹大约有11GB的大小。 我知道,我可以删除旧版本的模拟器,我不再使用。 但从这个独特的标识符我不知道哪个是正确的,哪个不是。 所以我的问题是:我可以全部删除吗? 没关系,如果下次我没有在模拟器中的任何应用程序,但我可以释放更多的东西? 老版本的模拟器? 还是其他什么? 谢谢

在Yosemite / Xcode 7.1.1中创build的iOS应用程序是否仍然可以在iOS 10(iPhone7)上使用?

XCode 7.1.1似乎是OS X Yosemite可用的最大版本。 在Wiki页面中,iOS 9似乎是包含的SDK。 使用XCode 7.1.1创build和构build的应用程序是否仍在iOS 10上运行? 是否有某种默认/回退/通用系统,允许iPhone 7使用一年或两年前build立的应用程序或旧版本的XCode?

Swift 2 JSON POST请求

我有以下swift代码提交POST请求成功。 let request = NSMutableURLRequest(URL: NSURL(string: url)!) let session = NSURLSession.sharedSession() request.HTTPMethod = "POST" request.HTTPBody = "foo=bar&baz=lee".dataUsingEncoding(NSUTF8StringEncoding) let task = session.dataTaskWithRequest(request, completionHandler: completionHandler) 而不是像使用语法查询参数,我想使用一个字典,但是当我做到以下几点: let request = NSMutableURLRequest(URL: NSURL(string: url)!) let session = NSURLSession.sharedSession() request.HTTPMethod = "POST" request.HTTPBody = try! NSJSONSerialization.dataWithJSONObject(["foo":"bar", "lee":"baz"], options: []) let task = session.dataTaskWithRequest(request, completionHandler: completionHandler) (就像我所看到的一样),它似乎提交的请求,如果身体是空的。 我的主要问题是:这些语法如何不同,以及由此产生的请求如何不同? 注意 :来自JS,我正在JavaScript环境(jquery.com的控制台)中testing端点,如下所示,它正在成功工作: $.ajax({ […]

代码Sign Error在macOS Sierra,Xcode 8上

嘿家伙只是更新,马上得到这个错误。 “错误:发生密码validation失败。” 有任何想法吗? 编辑:我有iOS 10

主要Bug,在XCAssets文件夹中创build的Sprite Atlas不支持批量渲染

我开始在XCAssets文件夹中使用新的Sprite Atlas,而不是在项目文件夹中使用我的图集。 但是我注意到,当我这样做时,我的节点不再被批处理渲染,导致大量低效的绘制调用。 这完全打败了使用图集的目的! 要清楚这是我用来获得地图集的代码。 let atlas = SKTextureAtlas(named: "Sprites") “Sprites”是在XCAssets文件夹中创build的Sprite Atlas。 有没有人有解决方法,或者我坚持在项目文件夹中制作雪碧套件集合。 我正在使用Xcode 7.2testing版。 之所以我想使用新的Sprite套件集群是因为这个问题。

迅速在不同的UnsafePointer <T>之间进行投射

我试图从swift使用C-Api。 举个例子,C-Api就是这样的: void doThingsOnRawData(const unsigned char* data); Swift将其转换为: void doThingsOnRawData(UnsafePointer<UInt8>); 现在我想将一个NSData的数据传递给函数。 NSData.byte返回types: UnsafePointer<()> 这是一种void *types吗? 至lessswift不会接受它作为UnsafePointer<UInt8> 。 我该怎么做呢?

Swift:asynchronouscallback

如何在swift中进行asynchronouscallback? 我正在为我的应用程序编写一个小框架,因为它应该在iOS和OS X上运行。所以我把不是特定于设备的主代码放到这个框架中,也处理对我的在线api的请求。 很显然,我也希望应用程序的GUI,因此我的ViewController一旦API请求完成反应。 在Objective-C中,我通过保存包含必须在idvariables中调用的函数的视图和select器variables中的函数本身来完成此操作。 然后我使用下面的代码调用函数: SEL selector = callbackMethod; ((void (*)(id, SEL))[callbackViewController methodForSelector:selector])(callbackViewController, selector); 我怎样才能做到这一点迅速? 还是有更好的方法呢? 我非常感谢你的帮助!

使用#define和clang为info.plist创build版本号变体?

几年前,在编译GCC时,在#include.h文件中定义的以下内容可以在info.plist中预处理: #define MAJORVERSION 2 #define MINORVERSION 6 #define MAINTVERSION 4 <key>CFBundleShortVersionString</key> <string>MAJORVERSION.MINORVERSION.MAINTVERSION</string> …将变成“2.6.4”。 这是因为海湾合作委员会支持“传统”的国旗。 (请参阅Xcode中的技术说明TN2175 Info.plist文件使用C预处理器 ,在“在macros扩展过程中消除令牌之间的空白”下) 但是,快进到2016和Clang 7.0.2(Xcode 7.2.1)显然不支持“-traditional”或“-traditional-cpp”(或正确支持),产生以下string: "2 . 6 . 4" (请参阅错误12035 – 预处理程序在macros扩展中插入空格,注释4 ) 因为有很多不同的变体(CFBundleShortVersionString,CFBundleVersion,CFBundleGetInfoString),所以最好解决这个叮当问题,并定义一次,然后连接/串联这些部分。 什么是现在这样做的普遍接受的模式? (我目前正在build立在MacOS上,但IOS的工作模式是一样的)