iOS基础学习之输出口和动作

记录一个菜鸟的iOS学习之旅,如能帮助正在学习的你,亦枫不胜荣幸;如遇路过的大神指导一番,亦枫感激涕淋!

通过前两节的学习,我们接触了一个经典编程语言初学者的必经项目 —— HelloWorld 的创建与运行。其中,在View Controller Scene中设计了控件,并在代码中为控件添加触摸事件。这也是一个移动端应用基本的开发工作,即拥有可以显示数值的View,同时这些View能够响应各种事件。

为了将场景(Scene)中的控件和代码中定义的事件建立联系(即连接,Segue),iOS开发语言中引入了“输出口”和“动作”的概念。亦枫画了一幅图来描述他们之间的作用机制:

作用机制.jpg

动作是为了响应控件的触摸事件而在代码中定义的方法,名字可以自由取值,返回值类型为IBAction,其中sender参数表示事件源,即响应事件的控件对。sender参数可以省略,如上图中的事件方法可以写成:

- (IBAction) onClick;

View Controller Scene中设计的控件在代码中创建输出口和动作有两种方式:一种就是上一节文章中介绍的方式,先写代码,后建连接;第二种方式比较便捷,简单的通过辅助编辑器(Assistant Editor)和拖拽即可完成。

快捷创建输出口和动作.gif

操作过程如上图所示。在以后的学习中,我们会发现,其实,含有委托协议的控件也能通过这种方式快捷创建委托方法,减少写代码的工作量。

最后,顺便再提一下上文输出口的属性。在定义输出口变量时,在property关键字后面添加了两个属性,weak和nonatomic,这里简单介绍一下,毕竟是为了打好基础嘛。

  • atomic
    原子操作。原子性是指事务的一个完整操作,在objective-c 属性设置里面默认的就是atomic,意思就是setter/getter函数是一个原子操作,如果多线程同时调用setter时,不会出现某一个线程执行完setter所有语句之前,另一个线程就开始执行setter,相当于函数头尾加了锁。这样的话并发访问性能会比较低;

  • nonatomic
    非原子操作。一般不需要多线程支持的时候就用它,这样在并发访问的时候效率会比较高。在objective-c里面通常对象类型都应该声明为非原子性的。 iOS中程序启动的时候系统只会自动生成一个单一的主线程。程序在执行的时候一般情况下是在同一个线程里面对一个属性进行操作。如果在程序中我们确定某一个属性会在多线程中被使用,并且需要做数据同步,就必须设置成原子性的,但也可以设置成非原子性的,然后自己在程序中用加锁之类的来做数据同步。通常说nonatomic 是提高在非多线程应用中的读写效率。

  • strong
    强引用。引用的存亡直接决定了所指向对象的存亡。如果不存在指向一个对象的引用,并且此对象不再显示在列表中,则此对象会被从内存中释放;

  • weak
    弱引用。不决定对象的存亡,即使一个对象被持有无数个弱引用,只要没有强引用指向它,那么还是会被清除。 指针置为nil。

至于属性的声明和属性的调用,即Property和snythesize关键字的配套使用,大家就自己去网上查询,这里就不加以复述,毕竟需要将精力放置在iOS开发上面,对于OC编程语言的基础知识,除了难点和疑惑点,尽量不作介绍。

给大家附上参考链接:

今天的文章到此结束,明天敬请期待。。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,212评论 30 472
  • 1.项目经验 2.基础问题 3.指南认识 4.解决思路 ios开发三大块: 1.Oc基础 2.CocoaTouch...
    阳光的大男孩儿阅读 5,042评论 0 13
  • 内容简介: 讲述农村富贵悲惨的人生遭遇,富贵本是阔少爷,可是他嗜赌如命,把家业输光了,一贫如洗,她的父亲被活活气死...
    谷永宾阅读 483评论 0 0
  • CGPoint position = CGPointMake(0, 142);[hotScrollerView s...
    赤焰军少帅林殊阅读 350评论 0 0
  • 所谓的舒适区,是熟悉的,可控的,游刃有余的范围。如果可以,想必没有人愿意去打破舒适区,自找麻烦和苦吃。 但是舒适区...
    十万错错阅读 190评论 1 0