故事板中有一个UILabel设置,允许设置自动缩小配置,如下所示:
但我无法为UIButton的文本标签找到相同的内容.我知道我可以通过编程方式设置它,但很想知道是否有办法在Storyboard中为UIButton启用此设置.
我有一个在AWS EB环境中运行的Django应用程序.随着最近的更新,我不得不将django-rq和rqscheduler集成到一些基于队列的后台任务中.这一切都可以在localhost上使用命令rqworker和rqscheduler.但是我找到一种方法让它在AWS EB环境中运行时遇到了麻烦.我的分析说,唯一的出路就是使用ElastiCache.任何人都可以指导我找到正确的方向或任何可以帮助我的博客文章吗?
django amazon-web-services redis amazon-elastic-beanstalk django-rq
我正在使用dispatch_sync执行一个块,并且块正确执行.但是这个块在主线程上执行.根据Apple Doc:
串行队列(也称为专用调度队列)按照将它们添加到队列的顺序一次执行一个任务.当前正在执行的任务在由调度队列管理的不同线程(可能因任务而异)上运行.
这意味着(或我所理解的)当前正在执行的进程将在一个单独的线程上运行.
下面是我用来判断发生了什么的代码.它在NSURLConnection的didReceiveData: delegate方法中被调用(我知道我不应该在didReceiveData:delegate方法中这样做 - 但这只是一个关注dispatch_sync的示例).以下是我可以假设的不同方式作为我的结论的证明:
在全局并发队列上使用dispatch_sync
dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
if ([NSThread isMainThread]) {
NSLog(@"Main Thread");
}
else
NSLog(@"Not on Main Thread");
//Some Process
});
Run Code Online (Sandbox Code Playgroud)输出 -
Main Thread
Main Thread
Main Thread
// Main Thread printed till didReceiveData: gets called
Run Code Online (Sandbox Code Playgroud)
使用dispatch_queue_create在自己创建的队列上使用dispatch_sync
// Create queue somewhere else like this
dispatch_queue_t newQueue = dispatch_queue_create("WriteQueue", DISPATCH_QUEUE_SERIAL);
dispatch_sync(newQueue, ^{
if ([NSThread isMainThread]) {
NSLog(@"Main Thread");
}
else
NSLog(@"Not on Main Thread");
//Some Process
});
Run Code Online (Sandbox Code Playgroud)输出 - …
使用基于元组的值将基于变量的元组直接传递给枚举会导致编译错误.例如:
我有一个枚举如下:
enum AnswerType {
case Objective(Int)
case Subjective(question: Int, answer: String)
}
var stAnswer = (question: 1, answer: "Student's Answer")
let answerType = AnswerType.Subjective(stAnswer) //Compilation error here - "Missing argument for parameter answer in call"
Run Code Online (Sandbox Code Playgroud)
这给Swift 2.1带来了编译错误.但是当我改变stAnswer为常量时,让它工作正常.任何有想法的人在这里导致编译器错误?
我的App包中有一个XML.我正在解析这个XML文件.我NSXMLParser使用以下方法解析此XML :
使用调度队列(GCD):
2.1使用dispatch_queue_create创建自己的调度队列
2.2使用具有高优先级的全局队列dispatch_get_global_queue
2.3使用低优先级的全局队列
2.4使用具有后台优先级的全局队列
运用 NSOperationQueue
我检查了执行解析XML文件所花费的性能和总时间,发现了非常奇怪(或可能是正确的)结果.
以下是上述解析方法的代码:
主线程上的串行执行 - 执行时间34毫秒.
BOOL success = [conf parseXMLFile:[[NSBundle mainBundle] pathForResource:@"Configuration" ofType:@"xml"] didFailWithError:&error];
if (success) {
DLog(@"Parsing Complete");
}
else
DLog(@"Parse error %@",[error description]);
Run Code Online (Sandbox Code Playgroud)2.1使用dispatch_queue_create - 执行时间68毫秒.
dispatch_queue_t backgroundQueue = dispatch_queue_create("BackQueue", NULL);
dispatch_async(backgroundQueue, ^{
NSError *error = nil;
BOOL success = [conf parseXMLFile:[[NSBundle mainBundle] pathForResource:@"Configuration" ofType:@"xml"] didFailWithError:&error];
if (success) {
DLog(@"Parsing Complete");
}
else
DLog(@"Parse error %@",[error description]);
});
dispatch_release(backgroundQueue); …Run Code Online (Sandbox Code Playgroud) 这让我感到很奇怪.在Swift中尝试以下方法:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
println(self.superclass) //Outputs "(ExistentialMetatype)"
}
Run Code Online (Sandbox Code Playgroud)
这使控制台上的输出为ExistentialMetatype
深入研究Swift的NSObject框架,它将其声明superclass为类型的只读计算属性AnyClass
var superclass: AnyClass! { get }
Run Code Online (Sandbox Code Playgroud)
但是没有提到这个词ExistentialMetatype.我不知道为什么,但它提醒Objective-C的运行时(可能是它中的Metatype一词).有人知道吗?
ios ×4
cocoa ×2
objective-c ×2
swift ×2
cocoa-touch ×1
django ×1
django-rq ×1
redis ×1
xcode ×1