swift3笔记
备注:这里只是个人的观点,有的地方也是copy,多多指教,个人笔记,有侵犯你们版权的地方还望海涵!!!
个人觉得swift和OC最大的区别就是增加了许多现代化的东西,java里面的闭包,private,public等修饰符的加入。
1.关于按钮点击方法:
btn.addTarget(self, action: #selector(compseBtnClick), for: .touchUpInside)
说明:这是在3.0后的变化,在前面我们用的是Selector,但是在3.0后面用的一般是#selector。如果给我们的监听方法加上private就会报错,根据个人的理解就是,我们的按钮点击事件是在我们的点击的时候,这个事件触发实在我们运行循环机制里面触发的,但是我们加了私有的访问类型。所以别的地方是不能访问的,只有特定的对象指针才能去访问。但是在OC里面可以,因为OC动态加载运行,所以在OC中的运行时机制是很重要的,所以一定要了解运行时机制。所以加上@objc外部类可以此方法。
实现点击方法:
@objc fileprivate func compseBtnClick(btn: UIButton)
{
NJLog(message: btn)
}
2.swift的convenience构造方法和init构造方法的见解和观点:
当自定义convenience构造方法的时候,我们首先必须调用init构造方法对convenience构造方法进行初始化属性,而且convenience构造方法不对所有的属性进行初始化,所以我们的convenience构造方法依赖于我们的init构造方法。所以我们在对系统原有的方法性从写的时候我们必须前面加一个convenience,以表示是对原有系统方法的从写。
3.storyboard和代码的好坏:
storyboard快发速度快,搭建界面可视化,后期维护费劲,而且有的时候xcode升级后会莫名其妙的出现问题(个人觉得时间充裕的话尽量用代码)。代码开发时间长,但是后期维护比较好,不能可视化(前期的架构很重要),架构不好的代码维护起来也很费力,以前我遇见过很多这样的代码,真想吐的感觉。所以代码架构好坏会影响到后期维护的成本以及app的走向趋势。
4.浅谈项目的架构和管理(只是个人观点):
项目的整体规划是特别重要的,例如在架构的时候,服务器那边的架设问题,以及客户端的架设问题,这里就我自己我谈谈关于iOS端项目的架构问题。(1)对于本地的项目有一个整体的规划,明确那里业务逻辑该走那一部分,通常有这几种设计模式:VIPER模式(美团采用的就是这种模式,V:视图,I:交互器,P:展示器 E:实体 R:路由(分发任务))、MVC模式:(model->view->controller)、MVVM模式:(M:model V:视图+控制器 VM:视图模型)、MVCS模式:(M:模型,V:视图 C:控制器 S:服务器),前面列举的中几种模式会根据你们公司的产品的设计不同而不同,自己选择一种合理的模式,在客户端我采用的一般是MVC设计模式,当然这种模式有好的地方,也有不好的地方,好的地方,利于代码的查找的模块化管理,不好的地方就是在一些安全性较高或者是业务逻辑复杂的APP中,需求没法满足(2)在代码架构的初期一定明确整个APP的走形问题 (3)一些有共同点的代码进行封装 (4)产品需求的确认和明确 (5 )开发人员任务的分发。当然一个好的app不光只是这些东西,例如你还要加入一些三方元素在里面等等。
swift3笔记的更多相关文章
- swift学习笔记 - swift3.0用GCD实现计时器
swift3.0之后,GCD的语法发生了翻天覆地的变化,从过去的c语法变成了点语法,下面是变化之后用GCD实现计时器的方法: 先贴代码: // 定义需要计时的时间 var timeCount = 60 ...
- Swift3.0 基础学习梳理笔记(一)
本篇是我在学完一遍基础语法知识的时候,第一遍复习,我一遍梳理一遍记录的笔记.同时分享给像我一样在学习swift 的猿友们. 本篇可能过于冗长.所以所有的参考资料都分模块的写在palyground 里, ...
- Swift3 今日(TodayExtension)扩展图文笔记
>图片1(创建今日扩展) >图片2 >图片3(设置大小) >图片4(绘画控件) >图片5(设置共享文件) >图片6(设置群组ID) >图片7(设置URL ...
- Swift3 Xcode8 Ios10 开发笔记
设置不同subView的层次: //将subView挪到最上边 self.view.bringSubviewToFront(subView) //将subView挪到最下边 self.view.sen ...
- Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)
本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...
- swift3.0 hello swift(1)
一直对swift感兴趣,在前段时间的新闻中,大多是swift3.0发布和xcode8.0的改进,因为改动比较大,以前使用swift2.x做项目的人,都在担心其项目从2.x迁移到3.0+的问题.以前简单 ...
- Swift3.0服务端开发(五) 记事本的开发(iOS端+服务端)
前边以及陆陆续续的介绍了使用Swift3.0开发的服务端应用程序的Perfect框架.本篇博客就做一个阶段性的总结,做一个完整的实例,其实这个实例在<Swift3.0服务端开发(一)>这篇 ...
- C# 8.0和.NET Core 3.0高级编程 分享笔记三:控制流程和转换类型
控制流程和转换类型 本章的内容主要包括编写代码.对变量执行简单的操作.做出决策.重复执行语句块.将变量或表达式值从一种类型转换为另一种类型.处理异常以及在数值变量中检查溢出. 本章涵盖以下主题: 操作 ...
- git-简单流程(学习笔记)
这是阅读廖雪峰的官方网站的笔记,用于自己以后回看 1.进入项目文件夹 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file ...
随机推荐
- 记oracle使用expdp将数据导出到asm报错
报错信息如下: ORA-39002: invalid operationORA-39070: Unable to open the log file.ORA-29283: invalid file o ...
- Flask最强攻略 - 跟DragonFire学Flask - 第十五篇 Flask-Script
其实本章就是为下一章做的铺垫啦,但是也要认真学习哦 Flask-Script 从字面意思上来看就是 Flask 的脚本 是的,熟悉Django的同学是否还记得Django的启动命令呢? python ...
- 软件工程实践小项目之模拟wc.exe的小程序
github源码和工程文件地址:https://github.com/Jackchenyu/Word_counts/tree/smart 基本要求:要实现wc的基本功能即文件中字符数.单词数.行数的统 ...
- java.sql.SQLException: Access denied for user 'scott'@'localhost' (using password: YES)
今天用eclipse连接一下数据库,出现此异常. java.sql.SQLException: Access denied for user 'scott'@'localhost' (using pa ...
- Chrome保存整个网页为图片(终极解决方案!)
打开需要保存为图片的网页 然后按F12,接着按Ctrl+Shift+P 在红框内输入full 点击下面的“Capture full size screenshot”就可以保存整个网页为图片了
- Eclipse创建Maven Web项目后更改Servlet版本
Eclipse创建Maven Web项目后更改Servlet版本 1.场景基于Eclipse通过maven-archetype-webapp原型创建一个Web项目后,其默认Servlet版本是2.3, ...
- DataFrame 行列数据的筛选
一.对DataFrame的认知 DataFrame的本质是行(index)列(column)索引+多列数据. DataFrame默认索引是序号(0,1,2…),可以理解成位置索引. 一般我们用id标识 ...
- UVA1203 Argus
思路 用堆维护每个触发器的下一个事件,每次取出一个事件再把对应触发器的下一个事件加入堆即可 代码 #include <cstdio> #include <algorithm> ...
- 论文笔记:Real-Time MDNet
Real-Time MDNet ECCV 2018 2018-10-22 15:52:01 Paper:http://openaccess.thecvf.com/content_ECCV_2018/ ...
- C#中get和set
释一: 属性的访问器包含与获取(读取或计算)或设置(写)属性有关的可执行语句.访问器声明可以包含 get 访问器或 set 访问器,或者两者均包含.声明采用下列形式之一: get {} set {} ...