首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Swift 类构造器的使用

    注: 我们在这篇博客中提到的构造器都为类构造器, 在这里不提及值构造器的使用,详见文档. 刚刚使用这个构造器的时候我感觉到很困惑啊, 不就是个 init, 你给我搞这么多事情干什么?...最后一个常见的错误大概是这样的 复制代码 Property 'self.label' not initialized at super.init call Orz, 到这里我已经放弃了自己通过尝试来解决这些问题了...每个类应该只有少量的指定构造器, 大多数类只有一个指定构造器, 我们使用 Swift 做 iOS 开发时就会用到很多 UIKit 框架类的指定构造器, 比如说: Swift 复制代码 init()init...Swift 的编译器会对初始化的方法进行安全地检查已保证实例的初始化可以被安全正确的执行: 指定构造器必须要确保所有被类中提到的属性在代理向上调用父类的指定构造器前被初始化, 之后才能将其它构造任务代理给父类中的构造器...跟 ObjC 不同, Swift 中的子类默认不会继承来自父类的所有构造器. 这样可以防止错误的继承并使用父类的构造器生成错误的实例(可能导致子类中的属性没有被赋值而正确初始化).

    1.7K20

    iOS - Swift 面向协议编程(二)面向对象开发

    上一篇文章iOS - Swift 面向协议编程(一) 已经对Swift的面向协议编程做了介绍,接下来该篇文章将使用面向协议开发(POP)来做下实际的应用 在实际开发中,自定义View基本上是必须的...好,现在又有一个类SecondTypeView,也是要求使用xib来初始化view。这时我们就会想,一样的加载xib的方法,那我们就把它抽取出来放到父类就可以了。...这里的父类以BaseView.swift为例 父类的主要实现代码 extension BaseView { class func loadFromNib() -> BaseView {...面向协议开发 将BaseView删除,FirstTypeView和SecondTypeView改回继承于UIView 1 新建一个Swift文件 Nibloadable.swift ?...loadFromNib协议方法 好了,面向协议开发的应用就�记录到这里,希望能帮助到大家! Demo

    61130

    Swift3.0 - 类和结构体的区别

    必须知道的 共同点 a.定义存储属性 b.定义函数 c.定义下标,使用下表访问自己的值 d.定义初始化设置自己的初始化状态 e.扩展自己的功能 f.实现协议提供某种特定的标准功能 不同点(...类有更多功能) a.类可以继承,结构体不能继承 b.类能够在运行时检查和解释类实例的类型 c.Deinitializers使一个类的实例来释放任何资源分配 d.类有引用计数,允许对象被多次引用...} // 定义结构体 struct StudentS{ var name:String } 提示: 在类中定义属性必须要注意,如果你定义的存储属性不是可选值类型,必须进行初始化,不然编译会报错...,但是结构体不会报错,因为系统默认会给结构体创建初始化方法 定义函数 // 定义类 class StudentC{ static var des:String = "学生的类"..." var name:String static func describe()->String{ return "这是一个定义学生的类" } } 提示: 类可以使用关键字

    49110

    窥探Swift之类的继承与类的访问权限

    上一篇博客《窥探Swift之别具一格的Struct和Class》的博客可谓是给Swift中的类开了个头。关于类的内容还有很多,今天就来搞一下类中的继承以及类的访问权限。...在Swift这么面向对象的编程语言中,也有类似的概念,不过其具体表达的方式以及每种权限的作用域不同罢了。在Swift中的访问权限有private, internal与public。...下方将会给出类的继承的一些示例,通过这些事例来认识一下Swift中的继承。   1. 父类的创建     这里我们创建一个名为Father的父类,他类可以继承Father类。...在Swift中也是有final关键字的,被final关键字所修饰的类是不能用来继承的。我们可以把Father类定义成final类型,并观察Children发生的变化。...二、访问权限     Swift中的访问权限与其他面向对象编程语言有所不同,虽然Swift中的访问权限也分为3个等级,但是每个等级所能访问的区域与其他编程语言相比还是有些区别的。

    1.5K50

    《Motion Design for iOS》(十七)

    让我们先添加一个简单的UIView对象到屏幕上并设置它的圆角。我们要把它添加到我们的主窗口上时因为它是一个快速的例子,但在真实的app界面中你需要添加到管理当前界面的视图控制器中。...如果你在你的app的delegate类的-application:didFinishLaunchingWithOptions方法中添加这个代码,就可以在运行后的屏幕上看到它。...这里是和上面一样的功能,但是是Swift而不是Objective-C写的。你可以打开Balls In Swift Xcode工程导出这个例子的Swift版本。...让我们创建一个基于block的动画来将圆从1.0扩大到2.0倍,这会让它变成原来的两倍大。...上称为 +animateWithDuration:delay:options:animations:completion: 的类方法时UIView提供的多种动画方法之一。

    96320

    iOS开源界面布局库终于破3000star

    大家可以到这里去下载: OC版本MyLayout: https://github.com/youngsoft/MyLinearLayout Swift版本TangramKit: https://github.com...然后又因为懂一点点android相关的编程,了解到android中有四大布局体系,而其中用的最多的就是线性布局。于是想既然如此那我为什么不自己写一个类似android的线性布局呢?...于是就开始着手写了我的布局库的第一个版本,现在我都还保留着这个类的实现和声明: //用于线性布局的子视图的属性,描述离兄弟视图的间隔距离,以及在父视图中的比重。...默认是NO.如果设置为YES的话则边缘视图的边距不起作用了,而且子视图的weight也不起作用了。而且不是调整自己的大小了 //也就是当垂直方向则所有子视图按顺序排列在中间。...swift版本的TangramKit中得到了有效的解决。

    1.9K40

    【从零开始用Swift开发一个iOS应用(仿微博)】开篇-1. demo上手体验

    最近在学iOS开发,本系列会针对iOS从前到后的开发进行全面讲解,小到开发工具使用,大到应用市场上线。 ?...二、代码实现 2.1 程序入口说明 Application/AppDelegate.swift文件中的@UIApplication注解,表示这个Class类是程序的入口 ?...三、上述示例swift与object-c的语法对比 3.1 创建视图类比 - Swift: UIView(XXX:) - OC: [[UIView alloc] initWithXXX:] 类名()...== alloc / init 等价 3.2 类方法类比 Swift: UIColor.yellow OC: [UIColor yellow] 3.3 访问当前对象的属性类比 建议:都不使用self...,不需要使用`:` OC: @selector 3.7 调试对比 Swift: print(xxx) 效率高,log中不包含时间,用#function来打印当前执行的方法 OC: NSLog,用__FUNCTION

    4.7K31

    深入了解 iOS 的初始化

    当自定义一个类的时候,要么直接继承自NSObject,要么继承自UIView或者其他类。 无论继承自什么类,都经常需要新的初始化方法,而这个新的初始化方法其实就是新的指定初始化器。...根据这条规则,可以从NSObject、UIView中看出,由于UIView拥有新的指定初始化器-initWithFrame:,导致父类NSObject的指定初始化器-init退化成便利初始化器。...必须重写旧的定初始化器,在里面调用新的指定初始化器 • 在 Swift 中,初始化的时候需要保证类(结构体、枚举)的所有非可选类型属性都会有值 • 在 Swift 中,必须在初始化完成后才能调用实例属性...• 在 Swift 中,子类如果没有新创建一个指定初始化器,并且没有重写父类的指定初始化器,则会继承父类的指定初始化器和便利初始化器 • 在 Swift 中,子类如果新创建一个指定初始化器,或者重写了父类的某个指定初始化器...,那么就不会继承父类的指定初始化器和便利初始化器;但是如果重写了父类的所有指定初始化器,就会继承父类的便利初始化器 • 在 Swift 中,子类可以把父类的指定初始化器重写成便利初始化器 • 在 Swift

    1K10

    Swift 面向对象解析(二)

    就可以   具体的例子 Swift继承 4:防止重写  final 关键字可以用于修饰 类、属性、方法、下标。...二:类的构造与析构 由于类的继承,子类不仅包括了自己定义的存储属性,还包括从父类继承得到的存储属性,类的所有存储属性,包括所有的继承父类的属性,在构造的过程中必须设置初始值,因此类的构造过程相对的比较复杂...与构造器相反的是,Swift 允许为类(枚举,结构体不允许)定义析构器,在实例销毁之前,系统就会自动的调用该实例的析构器。         ...哈哈~        下面给大家的学习链接,希望给大家有帮助: Swift的构造和析构过程 Swift 构造过程+析构过程(十三) Swift的构造过程 三:多态 Swift引用变量有两个类型,...看下面的代码例子,下面是给UIView扩展了两个方法: // MARK: - UIView的扩展方法 extension UIView{ func containsSubView(subView

    97770

    Swift开发规范-修订版

    前言 《Swift开发规范》发布之后得到了很多Swifter的关注,很多读者提议最好为每条规约添加一些代码示例,其实在发布之前,我就考虑到要加代码示例这件事,但是后来还是因为偷懒没加。...最近利用了空余时间,对之前的版本进行了完善,加入了代码示例及编译效率规约等等,并且考虑到读者对某些规约有些疑惑,也为部分规约增加了说明,推出新的版本--《Swift开发规范-修订版》。...也可使用“原生类型名 +Extensions”的形式; 正例:UIView+Frame.swift / MessageViewController+Request.swift / UIViewExtensions.swift...; 【推荐】实现每个协议时,在单独的 extension 里来实现; 代码示例(代码不具有业务含义,只是简单的格式规约示例) /** 涉及规约 1、类左大括号不另起一行; 2、类继承后跟空格;...let loginView = UIView() 反例: let loginView = UIView.init() 【强制】如果只有一个 get 的计算属性,忽略 get; 正例: var

    1.7K50

    iOS从Xib中设置样式

    项目中找类 下面这个是节约时间的大功臣:command + shift + o(字母O),在文件数目庞大的工程里效果尤为显著,可以让你在茫茫”类”海中找到你的那个它....command + control + ⬆ 或command + control + ⬇会帮我搞定一切. view位置 添加约束的时候,谁说控件A要放在控件B的下侧才能设置到A到B在y轴方向上的距离?...添加第三方字体 把字体ttf文件像普通文件加入到项目中,在xib或storyboard中就可以直接使用新字体了 属性设置 但是很多属性的设置 在xib中是不能完全自定义的,作为一个喜欢用xib这种方式的码客来说...下的实现方式(扩展) UIView+Border&CornerRadius.swift import Foundation import UIKit extension UIView {...下的实现方式(继承) UIViewBorderCornerRadius.swift import Foundation import UIKit @IBDesignable class UIViewBorderCornerRadius

    2.4K20
    领券