网站首页 > 博客文章 正文
记录一个菜鸟的IOS学习之旅,如能帮助正在学习的你,亦枫不胜荣幸;如遇路过的大神指导一番,亦枫感激涕淋!
细心的朋友可能已经注意到了,IOS学习之旅系列教程在本篇公众号的文章中,封面已经换成美女图片了,程序员的福利有木有!!!
这是亦枫将在微信公众号 [技术鸟] 的IOS系列文章中采取的路线。看文章,学技术,眼睛累了马上点击大图看美女,这难道就是传说中的养眼吗!!!
通过前两节的学习,我们接触了一个经典编程语言初学者的必经项目 —— HelloWorld 的创建与运行。其中,在View Controller Scene中设计了控件,并在代码中为控件添加触摸事件。这也是一个移动端应用基本的开发工作,即拥有可以显示数值的View,同时这些View能够响应各种事件。
为了将场景(Scene)中的控件和代码中定义的事件建立联系(即连接,Segue),IOS开发语言中引入了“输出口”和“动作”的概念。亦枫画了一幅图来描述他们之间的作用机制:
动作是为了响应控件的触摸事件而在代码中定义的方法,名字可以自由取值,返回值类型为IBAction,其中sender参数表示事件源,即响应事件的控件对。sender参数可以省略,如上图中的事件方法可以写成:
- (IBAction) onClick;
View Controller Scene中设计的控件在代码中创建输出口和动作有两种方式:一种就是上一节文章中介绍的方式,先写代码,后建连接;第二种方式比较便捷,简单的通过辅助编辑器(Assistant Editor)和拖拽即可完成。
操作过程如上图所示。在以后的学习中,我们会发现,其实,含有委托协议的控件也能通过这种方式快捷创建委托方法,减少写代码的工作量。
最后,顺便再提一下上文输出口的属性。在定义输出口变量时,在property关键字后面添加了两个属性,weak和nonatomic,这里简单介绍一下,毕竟是为了打好基础嘛。
atomic
原子操作。原子性是指事务的一个完整操作,在objective-c 属性设置里面默认的就是atomic,意思就是setter/getter函数是一个原子操作,如果多线程同时调用setter时,不会出现某一个线程执行完setter所有语句之前,另一个线程就开始执行setter,相当于函数头尾加了锁。这样的话并发访问性能会比较低;
nonatomic
非原子操作。一般不需要多线程支持的时候就用它,这样在并发访问的时候效率会比较高。在objective-c里面通常对象类型都应该声明为非原子性的。 iOS中程序启动的时候系统只会自动生成一个单一的主线程。程序在执行的时候一般情况下是在同一个线程里面对一个属性进行操作。如果在程序中我们确定某一个属性会在多线程中被使用,并且需要做数据同步,就必须设置成原子性的,但也可以设置成非原子性的,然后自己在程序中用加锁之类的来做数据同步。通常说nonatomic 是提高在非多线程应用中的读写效率;
strong
强引用。引用的存亡直接决定了所指向对象的存亡。如果不存在指向一个对象的引用,并且此对象不再显示在列表中,则此对象会被从内存中释放;
weak
弱引用。不决定对象的存亡,即使一个对象被持有无数个弱引用,只要没有强引用指向它,那么还是会被清除。 指针置为nil;
至于属性的声明和属性的调用,即Property和snythesize关键字的配套使用,大家就自己去网上查询,这里就不加以复述,毕竟需要将精力放置在IOS开发上面,对于OC编程语言的基础知识,除了难点和疑惑点,尽量不作介绍。
猜你喜欢
- 2025-06-08 比GoPro 13更强的大疆Action 5 Pro,到底强在哪里?
- 2025-06-08 信号和槽(信号和槽的实现原理)
- 2025-06-08 在响应式项目中连接设计与开发(请简述实现响应式设计包括哪些技术点)
- 2025-06-08 【C#】委托、Action、Func 和 Event 之间的关系
- 2025-06-08 如何使用JavaScript实现Prompt弹窗?
- 2025-06-08 谷歌Magic Actions功能曝光:AI革新安卓16通知交互
- 2025-06-08 基于目标TPS的性能测试,如何通过手动设置场景进行测试?
- 2025-06-08 《Java语言程序设计》期末考试模拟试题——判断题和问答题
- 2025-06-08 Android学习之Touch事件的处理(android触摸事件实例)
- 2025-06-08 现代空战不是单打独斗——看印巴冲突中的空战体系较量
你 发表评论:
欢迎- 最近发表
-
- 比GoPro 13更强的大疆Action 5 Pro,到底强在哪里?
- 信号和槽(信号和槽的实现原理)
- 在响应式项目中连接设计与开发(请简述实现响应式设计包括哪些技术点)
- 【C#】委托、Action、Func 和 Event 之间的关系
- 如何使用JavaScript实现Prompt弹窗?
- 谷歌Magic Actions功能曝光:AI革新安卓16通知交互
- 基于目标TPS的性能测试,如何通过手动设置场景进行测试?
- IOS基础学习之输出口和动作(io口输入输出实验总结及体会)
- 《Java语言程序设计》期末考试模拟试题——判断题和问答题
- Android学习之Touch事件的处理(android触摸事件实例)
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)