HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 在Swift导入扩展文件大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在 Swift中为UIView创建一个扩展名.任何人都知道如何将该文件导入到我的UIViewController?

我想在控制器文件中导入扩展文件,这样我可以重新使用扩展文件.例如这样的结构:

UIViewExtension.swift

import UIKit

extension UIView {
    var myVar : Float {
        get {
            return myVar
        }
        set (newMyVar) {
            myVar = newMyVar
        }
    }
}

ViewController.swift

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view,typically from a nib.
        var squareView: UIView = UIView(frame: CGRect(x: 0,y: 0,width: 200,height: 200))

        squareView.myVar = 50

        self.view.addSubview(squareView)
        println("Offset: \(squareView.myVar)")
    }
}

这是编译器给出的错误

命令/Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift失败,退出代码为254

解决方法

这里有几件事情.

>不需要像Objective-C一样导入扩展,因为同一模块中的所有内容都可以在Swift中自动使用.这意味着您的扩展名实际上可以在视图控制器中对编译器成功显示.
>您只能将计算属性添加到扩展名.这意味着你实际上没有@L_295_1@myVar来分配或读取.所以当你访问myVar时,你实际上是无限循环的.这实际上是警告所暗示的(尽管是模糊的):

warning: attempTing to access 'myVar' within its own getter
  return myVar
         ^

>据我所知,无法使用扩展名将非计算属性添加到类型. Objective-C也是如此,实际存储使用类扩展添加到类的属性的唯一方法是通过objc_getAssociatedObject和objc_setAssociatedObject从objc / runtime.h使用Objective-C对象关联.
>最后如果扩展的计算属性一个setter,那么编译器肯定会有一个错误.重现错误的最小工作示例,不包括递归(通过消除对myVar的访问),并忽略该值:

import UIKit

extension UIView {
  var myVar : Float {
  get {
    return 0
  }
  set {
  }
  }
}

大佬总结

以上是大佬教程为你收集整理的ios – 在Swift导入扩展文件全部内容,希望文章能够帮你解决ios – 在Swift导入扩展文件所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。