美文网首页
学习Swift 所遇到的坑系列(2)

学习Swift 所遇到的坑系列(2)

作者: wolf_吴郎 | 来源:发表于2017-03-17 17:09 被阅读0次

1.如何在Swift中进行懒加载

使用ObjectC开发的同学,习惯性的使用懒加载去加载属性或者控件,那么到了Swift开发的时候,如何才能进行懒加载呢?

lazy var tabBarController:CustomTabBarController = {

var tab:CustomTabBarController = CustomTabBarController()

return tab

}(),使用时self.window?.rootViewController = self.tabBarController即可使用。

2.如何重写属性的setter方法

如同定义一个占位图placeHoldImage

private var plcImage:UIImage{

   get{

get方法内,特别的重要,因为此刻你的一句代码,可能引起的就是一个crash,一般情况下我们直接return self.placeHoldImage!  注意此处的感叹号,在Swift中,由于声明的一个没有初始化的变量,所以我们在声明变量的时候,通常会在变量类型后面加一个问号,然后实例化过后使用的时候,我们通常使用感叹号来表明,这个变量已经初始化完成,不为空了,但是如果变量值为空的话,使用!后,将会crash。

    }

   set(newPlcImage){

注意此处,切不可书写picImage = newPicImage.或者self.picImage = newPicImage,一般情况下,我们定义两个属性,一个为placeHoldImage,一个为plcImage,此处可写为self.placeHoldImage = NewPicImage.使用的时候可以通过使用

   }

}

2.Swift中?和感叹号的区别

问号?

a.声明时添加?,告诉编译器这个是Optional的,如果声明时没有手动初始化,就自动初始化为nil

b.在对变量值操作前添加?,判断如果变量时nil,则不响应后面的方法。

叹号!

a.声明时添加!,告诉编译器这个是Optional的,并且之后对该变量操作的时候,都隐式的在操作前添加!

b.在对变量操作前添加!,表示默认为非nil,直接解包进行处理

3.如何在Swift中使用类似于OC中的Block

使用Block进行值得回传调用,是很多OC开发者必备的技能,那么到了Swift语言开发的道路上,如何继续使用此技能呢?

答案就是闭包。例如

/**

当点击图片的时候,相应的返回value所在的index,和value所对应的链接,便于

页面之间的跳转

*/

typealias clickBlock = (_ index:NSInteger) -> Void  

声明一个这样类型的点击事件Block,在定义属性的时候,将闭包声明为变量

var clickActionBlock:clickBlock? ,在使用的时候呢,我们可以

if (self.clickActionBlock != nil) {

self.clickActionBlock!(_currentIndex!)

}这样,和使用OC的block差不多。不同的是,在block 回传值得地方,书写改变了,写法为

self.picView?.clickActionBlock = {(_ index:NSInteger) in

print("第\(index) 张图片被点击")

},这样的写法,就可以帮助你在Swift中尽情的使用Block了。

相关文章

  • 学习Swift 所遇到的坑系列(2)

    1.如何在Swift中进行懒加载 使用ObjectC开发的同学,习惯性的使用懒加载去加载属性或者控件,那么到了Sw...

  • 学习Swift 所遇到的坑系列(1)

    从去年学习swift3,断断续续的学习,遇到了一些坑 1.如何在Swift 中定义宏,或者说,在一个文件中定义整个...

  • Swift3中Selector引起的unrecognized s

    状况 OC项目转Swift,学习Swift中,不断挖坑填坑。这次遇到了一个常见的Crash unrecognize...

  • Swift 4.0 Migration

    最近完成了Swift 4.0的迁移,记录下迁移过程中遇到的坑 Agenda Swift 4.0 简介 Swift ...

  • Swift 遇到的坑

    在swift中字典转模型,创建的model 继承自 NSObject,如果是swift 3 ,则在模型中创建属性不...

  • 学习Spring Cloud所遇到的坑

    1.Eureka Server没有发现Eureka ClientEureka Server没有发现Eureka C...

  • 斯坦福 Swift学习笔记系列(二)

    这是学习swift的笔记系列,学习的课程是斯坦福 iOS11 swift语言。 学习swift的笔记(一):in...

  • Swift奇趣漫谈A

    Swift奇趣漫谈 一、前言 这个系列的文章,是记录自己在学习和使用Swift的过程中,遇到的一些奇怪或者有趣的知...

  • Xcode8/Swift3 入坑笔记

    前言 今天把公司项目的swift代码升级到Swift3,遇到了不少坑 现在总算能跑起来了..还有很多坑要踩...这...

  • Swift_遇到的坑

    1-有两个类,在A类调用B类的方式时,出现❌Instance member '**' cannot be used...

网友评论

      本文标题:学习Swift 所遇到的坑系列(2)

      本文链接:https://www.haomeiwen.com/subject/ccgenttx.html