小编Tim*_*Tim的帖子

避免在swift中自动框架链接

我有一个示例项目,包括一个主目标(LinkerTests)和一个依赖动态框架(Dynamic).

如果运行该项目,您将看到以下dyld二进制加载:

dyld: loaded: {DerivedDataPath}/Build/Products/Debug-iphonesimulator/Dynamic.framework/Dynamic
Run Code Online (Sandbox Code Playgroud)

尽管存在以下情况import Dynamic,AppDelegate.swift但仍会发生此dyld二进制加载:

  1. Link Binary With Libraries 构建阶段是空的
  2. CLANG_MODULES_AUTOLINK 设置为false

我需要实现的是避免这种自动隐式链接.这可能吗?提前致谢!


相关问题:我们不需要再将框架链接到XCode项目了吗?

xcode dyld swift

9
推荐指数
1
解决办法
309
查看次数

比较Swift中C函数的指针

我正在寻找一种方法来比较指向c函数的指针.例如:

let firstHandler = NSGetUncaughtExceptionHandler()

NSSetUncaughtExceptionHandler(onUncaughtException)
let secondHandler = NSGetUncaughtExceptionHandler()

if firstHandler == secondHandler {
    debugPrint("equal")
}
Run Code Online (Sandbox Code Playgroud)

更新==,也没有===作品

目标CI可以表达如下:

NSUncaughtExceptionHandler *firstHandler = NSGetUncaughtExceptionHandler();

NSSetUncaughtExceptionHandler(onUncaughtException);
NSUncaughtExceptionHandler *secondHandler = NSGetUncaughtExceptionHandler();

if (firstHandler == secondHandler) {
    NSLog(@"equal");
}
Run Code Online (Sandbox Code Playgroud)

提前致谢

c pointers swift swift3

8
推荐指数
1
解决办法
307
查看次数

来自后台线程的快速UI更新.最佳做法

我有一个连续的NSOperationQueue

我有一个NSOperation子类,它从磁盘读取文件,从中创建一个UIImage,然后在主线程上显示图像.

假装包含大约一百个NSOperations的队列,那么来自后台线程的这种快速UI更新的最有效和优雅的解决方案是什么?

objective-c nsoperation nsoperationqueue grand-central-dispatch ios

7
推荐指数
0
解决办法
162
查看次数

测量所有目标(包括相关目标)的xcodebuild持续时间

是否有可能测量时间,而这条xcodebuild命令要花费时间来构建每个不同的目标?

假设我有一个目标,具体取决于一些cocoapodpod1pod2。我使用建立目标xcodebuild。我可以衡量整体时间。我需要衡量倍,即分别在花了pod1pod2而我的目标

我试图在xcodebuild的输出中找到答案,但没有成功。

提前致谢!

xcode profiling xcodebuild

2
推荐指数
1
解决办法
398
查看次数

缓存 Swift hash(into:) 的结果 Hashable 协议要求

我有一个类在集合和字典中被大量使用。出于性能原因,此类Hashable以旧方式实现并缓存计算的哈希值:

let hashValue: Int

init(...) {
    self.hashValue = ...
}
Run Code Online (Sandbox Code Playgroud)

在 Xcode 10.2 中,我看到一条警告,该警告hashValue已被弃用,并且很快将不再是协议要求。

令我困扰的是无论如何都无法缓存计算出的哈希值,因为hash(into:)不会返回任何内容。

func hash(into hasher: inout Hasher) {
    hasher.combine(...)
}
Run Code Online (Sandbox Code Playgroud)

考虑以下游乐场中的示例

class Class: Hashable {
    let param: Int

    init(param: Int) {
        self.param = param
    }

    static func ==(lhs: Class, rhs: Class) -> Bool {
        return lhs.param == rhs.param
    }

    public func hash(into hasher: inout Hasher) {
        print("in hash")
        hasher.combine(param)
    }
}

var dict = [Class: Int]()
let instance = Class(param: 1) …
Run Code Online (Sandbox Code Playgroud)

hash hashable swift

2
推荐指数
1
解决办法
488
查看次数