备注:这里只是个人的观点,有的地方也是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笔记的更多相关文章

  1. swift学习笔记 - swift3.0用GCD实现计时器

    swift3.0之后,GCD的语法发生了翻天覆地的变化,从过去的c语法变成了点语法,下面是变化之后用GCD实现计时器的方法: 先贴代码: // 定义需要计时的时间 var timeCount = 60 ...

  2. Swift3.0 基础学习梳理笔记(一)

    本篇是我在学完一遍基础语法知识的时候,第一遍复习,我一遍梳理一遍记录的笔记.同时分享给像我一样在学习swift 的猿友们. 本篇可能过于冗长.所以所有的参考资料都分模块的写在palyground 里, ...

  3. Swift3 今日(TodayExtension)扩展图文笔记

    >图片1(创建今日扩展) >图片2  >图片3(设置大小)  >图片4(绘画控件) >图片5(设置共享文件)  >图片6(设置群组ID) >图片7(设置URL ...

  4. Swift3 Xcode8 Ios10 开发笔记

    设置不同subView的层次: //将subView挪到最上边 self.view.bringSubviewToFront(subView) //将subView挪到最下边 self.view.sen ...

  5. Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)

    本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...

  6. swift3.0 hello swift(1)

    一直对swift感兴趣,在前段时间的新闻中,大多是swift3.0发布和xcode8.0的改进,因为改动比较大,以前使用swift2.x做项目的人,都在担心其项目从2.x迁移到3.0+的问题.以前简单 ...

  7. Swift3.0服务端开发(五) 记事本的开发(iOS端+服务端)

    前边以及陆陆续续的介绍了使用Swift3.0开发的服务端应用程序的Perfect框架.本篇博客就做一个阶段性的总结,做一个完整的实例,其实这个实例在<Swift3.0服务端开发(一)>这篇 ...

  8. C# 8.0和.NET Core 3.0高级编程 分享笔记三:控制流程和转换类型

    控制流程和转换类型 本章的内容主要包括编写代码.对变量执行简单的操作.做出决策.重复执行语句块.将变量或表达式值从一种类型转换为另一种类型.处理异常以及在数值变量中检查溢出. 本章涵盖以下主题: 操作 ...

  9. git-简单流程(学习笔记)

    这是阅读廖雪峰的官方网站的笔记,用于自己以后回看 1.进入项目文件夹 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file ...

随机推荐

  1. pageresponse.min.js自动缩放页面改写

    /* * 名称 :移动端响应式框架 * 作者 :白树 http://peunzhang.cnblogs.com * 版本 :v2.1 * 日期 :2015.10.13 * 兼容 :ios 5+.and ...

  2. ECMAScript6 入门教程 初学记录let命令 块级作用域

    一.基本语法-let命令 (1)ES6新增了let命令,用来声明变量.所声明的变量,只在let命令所在的代码块内有效. 循环的计数器,就很合适使用let命令.计数器i只在for循环体内有效,在循环体外 ...

  3. EasyUI中使用textbox赋值,setValue和setText顺序问题

    注意两点: 当text和value的值不同时,一定要先赋值Value,然后赋值Text,否则text和value全部为Value的值. 如果只setValue,则使用getText和getValue得 ...

  4. 使用java进行 AES 加密 解密?

    百度百科是这样定义的: 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标 ...

  5. springboot之jar包部署步骤

    eclipse中: 1.单击整个项目 run as - maven clean - maven install 2.找到项目所在的路径 找到所有的jar包 3.把jar包放到linux对应的文件夹 l ...

  6. jQuery安装和语法

    jQuery是一个JavaScript函数库,可实现HTML元素选取及操作.CSS 操作.HTML事件函数.JavaScript特效和动画.HTML DOM遍历和修改.AJAX等功能. 在html中引 ...

  7. Docker Swarm 介绍 or 工作原理

    Docker Swarm 介绍 Swarm 简介 Swarm是Docker公司自研发的容器集群管理系统,Swarm在早期是作为一个独立服务存在,在Docker Engine v1.12中集成了Swar ...

  8. Docker Swarm 创建服务

    Docker Swarm 创建服务 环境: 系统:Centos 7.4 x64 应用版本:Docker 18.09.0 管理节点:192.168.1.79 工作节点:192.168.1.78 工作节点 ...

  9. Consul 介绍

    Consul 介绍 Consul是一个分布式.高可用性,在基础设施中发现和配置服务的工具. 主要功能 服务发现 通过DNS或HTTP接口使得消费者发现服务,应用程序可以轻松找到所依赖的服务. 健康检查 ...

  10. MySQL 实战笔记

    01 | 基础架构:一条SQL查询语句是如何执行的? 大体可以分为: Server 层:包含了连接器.查询缓存.分析器.优化器.执行器,跨存储引擎的功能都在这一层实现的,比如存储过程.触发器.视图等. ...