iOS开发--Swift 最近项目开发中遇到的一些小问题与解决方法
1, Swift 修改导航栏颜色
self.navigationController?.navigationBar.barTintColor
2, Swift button
属性设置时直接进行初始化
var leftButton : UIButton = UIButton(type: UIButtonType.Custom)
由于是read-only属性, 所以不可以后修改, 直接在初始化的时候设置.
Type不推荐用system, 会自动渲染成蓝色.
button添加触发方法只需要在action参数中, 直接写出方法名的字符串即可, 好明显的函数指针既视感.
3, Swift的Bool类型
还是一贯的不允许隐式转换, 所以不可以在OC中0, 1或者直接判断对象存在即为真, 而是要通过逻辑判断, 比如 && || == 这种运算符得到Bool类型的返回值
4, 可选类型(Optional)
对于不确定是否存在的参数类型, 抑或是对象类型, 要加?, 代表不确定是否为空, 在确定不为空的情况下用!.
5, 显示转换
决不允许隐式转换, 语法都过不去的, 所以对于一些特定情况, 比如for var i = 0; i < n ; ++i循环生成图片, 在frame设置中, 一定要转换成CGFloat(), 再就是要用++i, 而不是i++.
6, 结构体类型对象
所有的结构体类型对象都有自带的实例方法, 而不见得非要使用CGRectMake()这种, 直接CGRect(就会索引出实例的构造方法了.
7, 结构体是值类型, 类对象是引用类型
值类型, 引用类型不多解释, 了解面向对象语言的同学都知道, Swift中的主要的数据类型都是结构体, 比如Int, Array, Dictionary等等.
8, init方法继承重写
不要忘记关键字(override), 先进行父类方法初始化, 不需要返回对象了, 同时也别忘记init?(coder aDecoder: NSCoder)方法, 否则会报错的
9, 成员变量
成员变量设置的时候, 实际就已经进行过初始化了, 所以并不需要在代码中再次进行初始化, 直接设置属性即可. 这个和OC中的属性有点差别.
10, collectionView作为成员变量
在声明成员变量的时候必要要写完整的实例化方法, frame和flowLayout的设置在代码中重新设置, 否则会内存出错, 提示没有flowLayout.
11, Swift注释的方法
// /**/ 条注释 块注释都支持
/**
*
*
*/ 解释注释也支持
再就是在OC中的#pragma mark
在Swift中变成了// MARK: 要大写
12, 最新更新到了9.3, Swift的语法也有了不少新的更新, 比如摒弃了C中的语法for循环, 自增运算符等等, 取而代之的是for in.
目前简单的遇到这么多, 以后再遇到问题, 再来补充.
iOS开发--Swift 最近项目开发中遇到的一些小问题与解决方法的更多相关文章
- springboot项目yml中使用中文注释报错的解决方法1
启动springboot项目时报错:/application.yml.....这大致就是说application.yml有问题,那么目前我所知道的大致两种情况会报错,第一种是yml格式有问题,要注意缩 ...
- PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等
页面导航: 首页 → 网络编程 → PHP编程 → php技巧 → 正文内容 PHP安全 PHP开发中常见的安全问题详解和解决方法(如Sql注入.CSRF.Xss.CC等) 作者: 字体:[增加 减小 ...
- idea开发工具下报Set language level to 6-@Override in interfaces的解决方法
idea开发工具下报Set language level to 6-@Override in interfaces的解决方法 实现接口时报如下错误:Set language level to 6-@O ...
- 关于CUDA C 项目中“ error C2059: 语法错误:“<” ”问题的解决方法
该问题的关键在于理解CUDA项目中C\C++文件需要由c++编译器进行编译,而CUDA C的源文件需要由CUDA的编译器nvcc.exe进行编译. 发生该语法错误的原因是cu文件被C++编译器所编译, ...
- ios UITableView中Cell重用机制导致内容重复解决方法
UITableView继承自UIScrollview,是苹果为我们封装好的一个基于scroll的控件.上面主要是一个个的 UITableViewCell,可以让UITableViewCell响应一些点 ...
- eclipse下修改项目名导致tomcat内发布名不一致的解决方法 .
eclipse下修改项目名导致tomcat内发布名不一致的解决方法 . ------------------------------------------------------- 解决方案: 直接 ...
- eclipse中找不到base64包的解决方法
eclipse中找不到base64包的解决方法 2017年08月26日 11:05:26 yzp_leo 阅读数:634 标签: javaeclipsebase64更多 个人分类: 日记 ecli ...
- Windows中Nginx配置nginx.conf不生效解决方法(路径映射)
Windows中Nginx配置nginx.conf不生效解决方法 今天在做Nginx项目的时候,要处理一个路径映射问题, location /evaluate/ { proxy_pass http:/ ...
- WAMP中phpMyAdmin登陆不了问题的解决方法
WAMP中phpMyAdmin登陆不了问题的解决方法
随机推荐
- Java魔法堂:枚举类型详解
一.前言 Java的枚举类型相对C#来说具有更灵活可配置性,Java的枚举类型可以携带更多的信息. // C# enum MyColor{ RED = , BLUE = } Console.Write ...
- linux的计划
我接触linux也有好几年了,至少有5年了.最近公司在搞内部培训,人人都可以报名培训别人.想到自己在linux浸淫多年,应该出来出一份力.一直以来想就linux写一个专题.今天刚好在做相关的ppt,借 ...
- OpenJudge 666:放苹果 // 瞎基本DP
666:放苹果 总时间限制: 1000ms 内存限制: 65536kB 描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1 ...
- [锋利的JQ]-超链接提示效果
关键知识点: 1.事件对象:当事件一旦被触发,事件对象便会创立.事件对象只能作用于该事件的事件处理程序. 2.认识了mousemove事件了连续触发执行的特性. 代码: HTML: <div c ...
- C#写快速排序
//先上快排代码------------------------------------------------------------------------public static void Q ...
- asp.net页面后退,重复弹出上一页对话框处理办法
我们在实例中,虽然页面内有导航,但是用户使用的时候难免会使用浏览器的后退按钮. 时常会发现,当后退的时候,上一页的对话框会自动弹出,下面是解决办法. 问题:使用此js代码,后退按钮时,重复显示对话框内 ...
- 【Java每日一题】20161129
package Nov2016; public class Ques1129 { public static void main(String[] args) { final String str = ...
- cookies
Cookie[] cookies=request.getCookies(); for(Cookie c:cookies) out.println(c.getValue()+" ") ...
- Android版的菜谱客户端应用源码完整版
Android版的菜谱客户端应用源码完整版,这个文章是从安卓教程网转载过来的,不是本人的原创,希望能够帮到大家的学习吧. <ignore_js_op> 152936qc7jdnv6vo0c ...
- python队列Queue
Queue Queue是python标准库中的线程安全的队列(FIFO)实现,提供了一个适用于多线程编程的先进先出的数据结构,即队列,用来在生产者和消费者线程之间的信息传递 基本FIFO队列 clas ...