@discardableResult在框架

时间:2017-09-28 05:25:29

标签: ios swift frameworks

我在框架项目中遇到了一个奇怪的问题。当我尝试在我的框架中调用一个函数时,Swift 3编译器警告我未使用的结果,即使我在框架中用@discardableResult标记了该函数

这是我的代码 SampleFramework.swift项目

中的cocoa touch framework文件
import Foundation

@discardableResult
public func keychainPerform(key:String) -> String{
    print("success");
    return "aaa";
}
ViewController.swift swift项目中的

single view application文件

import UIKit
import SampleFramework

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        SampleFramework.keychainPerform(key: "asd") //  Warning: result of call is unused
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }



}

我用其他框架检查过这个场景,但是@discardableResult对所有这些框架都做得很好,所以请帮我找出我做错了什么?

1 个答案:

答案 0 :(得分:0)

我偶然发现了Xcode 12 / Swift 5.3中的同一问题。

我认为这是编译器中有关接口文件缓存的错误。

如果您以前创建的函数没有_02属性,则编译器显然不会在添加后选择它,除非您进行完全重建,即强制清理构建文件夹和/或删除{{1 }}。