备注:这里只是个人的观点,有的地方也是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. ExecuteNonQuery方法、ExecuteScalar方法、ExecuteReader方法的区别

    ----ExecuteNonQuery():执行命令对象的SQL语句,返回一个int类型变量,如果SQL语句是对数据库的记录进行操作(如记录的增加.删除和更新),那么方法将返回操作所影响的记录条数.- ...

  2. 浅探网络1---tcp协议详解(三次握手和四次挥手)

    TCP协议是网络多层协议中运输层的最重要的协议之一,运输层是两台主机的进程之间的通信.除了TCP还有一个是UDP协议(用户数据包协议) TCP全称是Transmission Control Proto ...

  3. function(){}、var fun=function(){}和function fun(){}的区别

    一.基本定义 1.函数声明:使用function声明函数,并指定函数名. function fun() { // ...... } 2.函数表达式:使用function声明函数,但未指定函数名,将匿名 ...

  4. 20190402 管道符,分号,单引号,双引号,&&的使用

    :分号叫顺序执行 格式:命令:命令 && :前一条命令执行成功,后面命令继续执行:前面命令执行失败,后者不执行 格式:命令+空格&&空格+命令 || :两管道逻辑执行, ...

  5. Redis初探-Redis安装

    官网地址:https://redis.io/download 最新版本是4.0,在这里本人下的是3.2 使用rz命令可以将Redis上传到Linux系统 首先要确定Linux上是否安装了gcc,没有则 ...

  6. Vue 组件&组件之间的通信 之 template模板引用与动态组件的使用

    template模板引用 在component的template中书写大量的HTML元素很麻烦. Vue提供了<template>标签,可以在里边书写HTML,然后通过ID指定到组建内的t ...

  7. HTTP1.0、HTTP1.1 和 HTTP2.0 的区别

    一.HTTP的历史 早在 HTTP 建立之初,主要就是为了将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器.也是说对于前端来说,我们所写的HTML页面将要放在我们的 web 服务器上 ...

  8. HDU 5333 Undirected Graph(动态树)

    题意 给定一棵 \(n\) 个节点, \(m\) 条边的无向图,每个点有点权,有 \(q\) 个询问,每次询问若删去存在一个节点权值在 \([L,R]\) 范围外的边,剩下的图构成了多少个连通块(询问 ...

  9. IP分为五类

    IP地址分为五类: IP地址分为五类:A类保留给政府机构,B类分配给中等规模的公司,C类分配给任何需要的人,D类用于组播,E类用于实验. 常用的三类IP地址 IP = 网路地址(网络号)+主机地址(主 ...

  10. CentOs系统设置python版本

    一.针对当前终端生效 最近云服务器安装了centos7系统,python默认版本是2.7.5,但是习惯用anaconda3, 安装anaconda3之后将系统默认python版本更改为python3. ...