我有一个简单的问题,我花了无数个小时试图解决这个问题.
如何在Xcode Storyboard中更改视图控制器的大小以进行编辑?
我有一个大型表格/问卷,我想放在我的视图控制器上,而我根本无法使用故事板给我的当前大小.
此外,所提供的尺寸("推断","FreeForm","Retina 3.5"和"Retina 4")都不够大!
有没有人能解决我的问题?
我一直在选择和探测Swift标准库sort()函数的Array类型.令我惊讶的是,我注意到它在已经排序的数据上表现不佳.
对一个数组进行排序的排序Int似乎比已经排序的同一个数组的排序速度快5倍.对一个混洗对象的数组进行排序比按排序顺序排序相同的数据快4倍(排序对象数组与Int数组使用不同的算法我确定所以我将它们排序以消除偏差).
这些是结果:
Shuffled Int array sort time: 1.3961209654808
Shuffled ColorObject array sort time: 3.14633798599243
NOnshuffled Int array sort time: 7.34714204072952
NOnshuffled ColorObject array sort time: 10.9310839772224
Run Code Online (Sandbox Code Playgroud)
以下是我的代码参考:
class ElapsedTimer {
let startTime: CFAbsoluteTime
var endTime: CFAbsoluteTime?
init() {
startTime = CFAbsoluteTimeGetCurrent()
}
func stop() -> CFAbsoluteTime {
endTime = CFAbsoluteTimeGetCurrent()
return duration!
}
var duration: CFAbsoluteTime? {
if let endTime = endTime {
return endTime - startTime
} else {
return …Run Code Online (Sandbox Code Playgroud) 我试图在Swift中构建一个数据结构,将Integer映射到一个对象数组(一个字典,其中int为键,数组为value).对象非常小,它们只需包装UIColor和Int.我有两个实现,一个使用Swift数组作为Dictionary的值类型,而另一个使用NSMutableArray作为值类型.我的Objective-C代码执行速度非常快,但我的Swift代码运行得非常慢.理想情况下,我不想使用NSMutableArray,并希望将其保留为Swift数组.原因是我正在编写算法和性能问题,我注意到了objC_msgSend的一些开销.任何人都可以帮我优化我的Swift代码吗?我做错了什么,或者这只是快速处理数组作为值类型的副产品?如果是,我想理解为什么值类型在这种情况下表现得如此之慢,我的选择是什么,以及这种情况如何能够在未来扩展?下面我发布了一个代码段和结果基准:
Swift数组代码:
let numColors = colorCount(filter: filter, colorInfoCount: colorInfo.count)
var colorCountsArray: [Int] = [Int]()
var countToColorMap: [Int:[CountedColor]] = [Int:[CountedColor]](minimumCapacity: capacity)
var topColors = [CountedColor]()
var startTime = CACurrentMediaTime()
for (color, colorCount) in colorInfo {
colorCountsArray.append(colorCount)
if countToColorMap[colorCount] != nil {
countToColorMap[colorCount]?.append(CountedColor(color: color, colorCount: colorCount))
} else {
countToColorMap[colorCount] = [CountedColor(color: color, colorCount: colorCount)]
}
}
var endTime = CACurrentMediaTime()
print("Time after mapping: \(endTime - startTime)")
Run Code Online (Sandbox Code Playgroud)
迅捷表现:
Time after mapping: 45.0881789259997
Run Code Online (Sandbox Code Playgroud)
NSMutableArray代码:
let numColors = colorCount(filter: filter, colorInfoCount: colorInfo.count)
var colorCountsArray: …Run Code Online (Sandbox Code Playgroud) 我目前正在开发一款与蓝牙设备配对的iPhone应用程序.
我们在此配对方面存在一些延迟问题,并在我们的设备配对/连接时检测到正确的时间.
你们知道iPhone是否有一些log我们可以查看/提取蓝牙设备的信息吗?
我想对整数进行排序,并且我知道基数排序对此非常有用。任何此类的库实现?
目前swizzling正在Objective-C中尝试方法,我有一个问题.我试图理解方法混合的正确方法,在网上研究后我偶然发现了这个NSHipster帖子:http://nshipster.com/method-swizzling/
在帖子中,作者有一些方法调整样本代码.我正在寻找有人能够更好地向我解释作者正在做什么.特别是我对didAddMethod逻辑感到困惑.为什么作者不仅仅是直接的swapping/exchanging方法实现?我唯一的理论是,可能还有一些机会viewWillAppear:尚未加入UIViewController's method dispatch_table.特别是如果可能先将类别加载到内存中UIViewController......这是为什么?看起来很奇怪?只是寻找更多洞察力/清晰度,谢谢:)
我想了解转义闭包在 Swift 3 中是如何工作的?来自 Objective-C 世界,对于闭包可以逃避其封闭函数的返回的场景,您必须按照以下方式做一些事情:
@property (nonatomic, copy/strong) void (^callback)(NSData *rawData);
-(BOOL)someFunctionThatConsumesABlock:(void (^)(NSData *rawData))block
{
if (callback) {
self.callback = block;
return YES;
}
return NO;
}
-(void)someFunctionThatExecutesAtSomeLaterPoint
{
NSData *data = [self bytesFromSomeProcess];
self.callback(data);
}
Run Code Online (Sandbox Code Playgroud)
基本上在objective-C的上述代码中,消耗块的对象执行堆复制并强保留块。这种强保留是有道理的,因为块也需要在它作为参数传递的函数范围之外停留(因为它是一个转义闭包/块)。
在 Swift 3 中,似乎不再需要上述内容。所有需要做的只是将闭包注释为“转义”。那么 Swift 3 在幕后做了什么?它和Objective-C做同样的事情吗?从本质上讲,Swift 3 中的转义闭包是否也会被它们传递的对象隐式强保留?我不知道该语言还有什么方法可以实现这一点并使闭包“保持不变”。
我正在尝试实现线程安全的PhoneBook对象。电话簿应该能够添加一个人,并根据其姓名和phoneNumber查找一个人。从实现的角度来看,这仅涉及两个哈希表,一个关联名称-> Person,另一个关联电话号-> Person。
需要注意的是,我希望该对象是threadSafe。这意味着我希望能够在电话簿中支持并发查找,同时确保每次只有一个线程可以将一个人添加到电话簿中。这是基本的读写器问题,我正在尝试使用GrandCentralDispatch和Dispatch障碍解决此问题。尽管遇到问题,但我仍在努力解决此问题。以下是我的Swift操场代码:
//: Playground - noun: a place where people can play
import UIKit
import PlaygroundSupport
PlaygroundPage.current.needsIndefiniteExecution = true
public class Person: CustomStringConvertible {
public var description: String {
get {
return "Person: \(name), \(phoneNumber)"
}
}
public var name: String
public var phoneNumber: String
private var readLock = ReaderWriterLock()
public init(name: String, phoneNumber: String) {
self.name = name
self.phoneNumber = phoneNumber
}
public func uniquePerson() -> Person {
let randomID = UUID().uuidString
return Person(name: randomID, phoneNumber: randomID) …Run Code Online (Sandbox Code Playgroud) multithreading grand-central-dispatch barrier data-synchronization swift
在进行按位操作时,我无法确定何时使用XOR运算符.Bitwise And和Or非常直接.如果要屏蔽位,请使用按位AND(常见用例是IP寻址和子网掩码).当你想打开位时使用包含或.然而,XOR总是让我感觉如果在面试中被问到需要使用XOR的问题,我将永远不会得到它.有人可以说明何时使用它和一些常见的用例.
我正在构建一个应用程序,我正在考虑将一些数据保存/写入应用程序文档/目录.我希望数据能够跨实例持续存在,这意味着如果用户杀死了我的应用程序的当前实例,那么我写入Documents /目录的任何数据都应该保留.
通常,当您终止应用程序的实例时,会清除哪些类型的应用程序数据?
swift ×4
ios ×3
algorithm ×2
iphone ×2
objective-c ×2
sorting ×2
arrays ×1
barrier ×1
bluetooth ×1
c ×1
c++ ×1
closures ×1
mobile ×1
performance ×1
persistence ×1
radix-sort ×1
storyboard ×1
swift3 ×1
swizzling ×1
value-type ×1
xcode ×1
xor ×1