Self 可以用作方法的返回类型:
func doSomething() -> Self {}
Run Code Online (Sandbox Code Playgroud)
是否有可能Self像这样使用泛型类型?
func doSomething() -> Wrapper<Self> {}
Run Code Online (Sandbox Code Playgroud)
例
如果我可以wrapped继承ChristmasPresent并让它有一个函数返回带有泛型集的WrappedPresent到子类的任何东西,那将是很好的.
class ChristmasPresent {
func wrapped() -> WrappedPresent<Self> {
return WrappedPresent(present: self)
}
}
class WrappedPresent<T: ChristmasPresent> {
var present: T
init(present: T) {
self.present = present
}
}
class ToyCar: ChristmasPresent {}
let wrappedToyCar = ToyCar().wrapped() // Inferred to be: WrappedPresent<ToyCar>
Run Code Online (Sandbox Code Playgroud) 我正在创建一个依赖于其他几个第三方框架的Swift框架.这些其他框架都支持迦太基和Cocoapods.
有没有什么办法可以让我自己的框架支持使用Carhage和Cocoapods进行安装?或者是不可实现的,我应该选择一个吗?
我有一个需要测试的 SPM 项目xcodebuild(因为它具有 XIB 等 iOS 资源)。该项目还支持 Cocoapods,因此它也有.xcodeproj和.xcworkspace文件。
通常 xcodebuild 会自动检测该Package.swift文件并使用它来构建,但现在它会检测 Cocoapods 工作区并尝试从该工作区开始。
我通读了 的文档xcodebuild,但找不到明确将其指向 Package.swift 的标志。
是否有任何相当于--project或--workspace标志的东西可以用来告诉 xcodebuild 使用该Package.swift文件并忽略项目和工作区?
我正在研究使用UIDocumenten NSFileWrapper来存储包含大量视频文件和一些小文本文件的"项目".我遇到了一些问题,我开始怀疑UIDocument是否仍然是正确的策略.
性能
据我所知,NSFileWrapper将所有内容加载到内存中.使用大型视频文件时,这可能是一个问题.我认为可以通过使用放弃标准的自定义保存和加载方法来解决这个问题NSFileWrapper.
元数据
我想显示所有文档的列表以及一些元数据.这可以例如包括预览图像,记录的场景的数量,视频的长度等.现在获取该数据的唯一方法是打开每个文档并检索它.可能很慢,特别是对于大型文档.
解决方案?
我现在看到两个解决方案:完全抛弃UIDocument并转向自定义架构,或者使用某种集中式元数据文件.后者的缺点是我必须在两个不同的地方管理元数据,我需要手动保持它们同步.
UIDocument仍然是去这里的方式,如果是这样的话:什么可以解决这些问题?
崩溃时,我目前正遇到一些Swift源文件的问题。确实,在Crashlytics上,我有关于该行和崩溃原因的奇怪信息。它告诉我源已在第0行崩溃,并给了我SIGTRAP错误。我读到一个线程达到断点时会发生此错误。但是问题是,当我没有调试(来自TestFlight的应用程序测试)时,就会发生此错误。
这是当Crashlytics告诉我第0行存在SIGTRAP错误的示例:
// Method that crashs
private func extractSubDataFrom(writeBuffer: inout Data, chunkSize: Int) -> Data? {
guard chunkSize > 0 else { // Prevent from having a 0 division
return nil
}
// Get nb of chunks to write (then the number of bytes from it)
let nbOfChunksToWrite: Int = Int(floor(Double(writeBuffer.count) / Double(chunkSize)))
let dataCountToWrite = max(0, nbOfChunksToWrite * chunkSize)
guard dataCountToWrite > 0 else {
return nil // Not enough data …Run Code Online (Sandbox Code Playgroud) 我正在运行下面的代码 -
class Element {
var name: String
init(name: String) {
self.name = name
}
deinit {
print("Element is deinitializing...")
}
}
var element: Element? = Element(name: "Silver")
var closure = {
print(element?.name ?? "default value")
}
print(isKnownUniquelyReferenced(&element))
element?.name = "Gold"
element = nil
closure()
Run Code Online (Sandbox Code Playgroud)
它打印 -
true
Element is deinitializing...
default value
Run Code Online (Sandbox Code Playgroud)
上面的闭包捕获不是element很强吗?element里面怎么变成nil了closure?
我想在原始语音备忘录应用程序上对记录进行可视化:

我知道我可以获得级别 - updateMeters - peakPowerForChannel: - averagePowerForChannel:
但是如何绘制图形,我应该自定义吗?我可以使用免费/付费来源吗?
我们已经在应用程序中实现了深层链接活动。它适用于iOS11。当我们通过Web门户发送SMS时。它在iPhone中收到。更新到iOS 12后,我的iPhone设备未收到链接消息。这是我的代码如下:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
let branch: Branch = Branch.getInstance()
branch.initSession(launchOptions: launchOptions, automaticallyDisplayDeepLinkController: true, deepLinkHandler: { params, error in
if error == nil {}}
// Respond to URI scheme links
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
Branch.getInstance().handleDeepLink(url);
return true
}
Run Code Online (Sandbox Code Playgroud)
我们还在plist中添加了branch_app_domain,branch_key和URL Type。
我们需要在代码中添加任何内容吗?
现在试着了解这次崩溃.
对于某些用户(随机,操作系统10.14/10.14.1),应用程序在第一次加载时崩溃.
Crashed: com.apple.main-thread
EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x0000000000000000
-[NSCollectionViewData layoutAttributesForItemAtIndexPath:]
Crashed: com.apple.main-thread
0 UIFoundation 0x7fff7ac71c6a -[NSCollectionViewData layoutAttributesForItemAtIndexPath:] + 72
1 UIFoundation 0x7fff7ac3cb52 -[_NSCollectionViewCore _updateVisibleCellsNow:] + 7748
2 UIFoundation 0x7fff7ac358a9 -[_NSCollectionViewCore _layoutItems] + 298
3 AppKit 0x7fff5019dbc2 -[NSCollectionView layout] + 360
4 AppKit 0x7fff5002e755 _NSViewLayout + 587
5 AppKit 0x7fff5002e0fc -[NSView _layoutSubtreeWithOldSize:] + 446
6 AppKit 0x7fff5002e375 -[NSView _layoutSubtreeWithOldSize:] + 1079
7 AppKit 0x7fff5002e375 -[NSView _layoutSubtreeWithOldSize:] + 1079
8 AppKit 0x7fff5002e375 -[NSView _layoutSubtreeWithOldSize:] + 1079
9 AppKit 0x7fff5002e375 -[NSView _layoutSubtreeWithOldSize:] + 1079 …Run Code Online (Sandbox Code Playgroud) 我将我的应用程序提交到应用程序商店,他们说应用程序启动时崩溃。但对于我的设备和模拟器来说,它工作正常。无法找到这里的问题。
我附上了苹果给我的带有崩溃文件的二进制图像。请让我知道任何能够解决该问题的人。
谢谢
崩溃显示在这里:
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 WCi 0x0000000100df0454 specialized closure #1 in MainScreenViewController.getAdressName(coords:) + 509012 (MainScreenViewController.swift:668)
1 WCi 0x0000000100e01ed4 partial apply for closure #1 in MainScreenViewController.getAdressName(coords:) + 581332 (MainScreenViewController.swift:0)
2 WCi 0x0000000100de0288 _T0SaySo11CLPlacemarkCGSgs5Error_pSgIegxx_So7NSArrayCSgSo7NSErrorCSgIeyByy_TR + 443016 (MainScreenViewController.swift:0)
3 libdispatch.dylib 0x00000001d96596c8 0x1d95f9000 + 394952
4 libdispatch.dylib 0x00000001d965a484 0x1d95f9000 + 398468
5 libdispatch.dylib 0x00000001d96069a4 0x1d95f9000 + 55716
6 CoreFoundation 0x00000001d9bb0df4 0x1d9b05000 + 703988
7 CoreFoundation 0x00000001d9babcbc 0x1d9b05000 + 683196
8 CoreFoundation 0x00000001d9bab1f0 0x1d9b05000 + …Run Code Online (Sandbox Code Playgroud) ios ×8
swift ×7
xcode ×2
app-store ×1
branch.io ×1
carthage ×1
cocoapods ×1
crash ×1
crashlytics ×1
deep-linking ×1
generics ×1
location ×1
macos ×1
macos-mojave ×1
metadata ×1
performance ×1
uidocument ×1
xcodebuild ×1