iOS开发之Swift学习笔记

Swift学习笔记

变量与常量

  • 定义数字变量的时候,如果数字很大,可以把数字用下划线隔开
1
let SpeedOfLight = 300_000 // 数字比较大的时候,可以用下划线隔开
  • 可以用中文甚至emoji来作为变量名

iOS开发之命名规范

做开发的知道每种语言都有自己的命名规范,比如C语言的变量下划线式命名等等。iOS开发中用Objective-C语言开发,今天在开发中遇到一个命名的问题,看来又得熟读OC的命名规范了。
问题如下:

1
Property follows Cocoa naming convention for returning 'owned' objects

OC中属性命名不能以关键字开头。嗯,改个符合规范的命名即可。

(本文会继续完善规范……)
2018年08月11日12:21:40
距离上次已经很久了,今天又看了苹果coding naming guidelines,收获良多。根据原文大概总结一下于此。

Cocoa代码编写命名指南(基本是翻译过来加上自己的理解)

变量命名

  1. 词要达意(新东家的命名指南有一条说是要用美式英语而不是英式英语,这一条印象深刻。比如用color而不是colour,毕竟美帝还是这个星球最牛逼的国家)
  2. 不要用缩写,即使它很长。(这条苹果考虑了不同文化背景的编程人员,贴心。但是一些历史悠久的缩写比如Alt-alternate, Ctrl-control还是可以使用的,这个界定的关键也不好说,苹果列出了一些缩写词语,真正还要自己把握)
  3. 保留二字前缀(代码使用前缀很好很重要。两个字母的前缀少用,以免未来与苹果发生冲突,最好使用仨字母的那种)
  4. 变量不要指代自己本身(比如命名一个NSString,就不要命名为某某String之类的)
  5. 避免冲突(比如tag,这个变量在很多UIKit的控件都有,不要使用)

类和协议命名

  1. 类的命名要包括一个名词明确的指代代表什么,有合理的前缀。苹果的代码就是最好的示例。比如NSDate,NSSring等等。
  2. 协议的命名需要根据一组共同的行为来确定。为了避免与类名冲突,最好的解决方法是加ing。比如NSLocking协议和类NSLock。不过大部分是加一个Delegate完事儿……

电脑实用——超大号字体打印

今儿早在公司,清洁阿姨请求让帮忙打印一个“货运出租”的招牌,想着这还不小事儿一桩,可是急的抓耳挠腮还是百度后才晓得。现记录之。
既然是招牌,字体当然要大,在Word里直接选字号是不行的,应该输入一个数字即可。
如图:

而且,四个字横着放最能完全使用一张A4纸,所以打印的时候,在“文件”->“页面设置…”中选择打印方向为横向即可。
如图:

大功告成!

了不起的麦瑟尔夫人

昨天第一次听说这个剧。豆瓣评分有8.8呢。剧荒半年了,记得上次看剧还是《大明王朝1566》。这个名字让我立马想到《了不起的盖茨比》。赶紧下载观之。
地铁上看了第一集,很吸引人。第一集就甩出个大矛盾——“他离开了”。
随便说说第一集的感想吧。

  • 犹太人对世界的认知很深刻呢!也难怪世界舞台有他们一席。

  • 麦瑟尔自己身上上演的悲剧放到舞台上以后,在别人眼里就是活生生的喜剧~看了有点难过。

  • 很好奇在剧场干了8年的那个女人,看起来很有故事。不知道她会和女主发生些什么有趣的故事。

  • 有个细节。麦瑟尔在他丈夫入睡之后化妆,阳光照进屋子丈夫还没醒的时候卸妆。以前貌似在某个博主的文下看过这个桥段,博主说他妈妈也是如此。后面验证。
  • 我还没有经历婚姻,也许这剧会刷新我的婚姻的认知。

svn终端常用命令使用

多人共同开发项目无可避免的要用到版本控制。本人所在的公司使用的是svn。个人习惯使用终端来进行各种操作。以下是本人常用的svn命令,好多没有带参数(因为没怎么用到)如下:

  • svn checkout 绝对地址路径 --username password简化为svn co
  • svn add 文件名告知服务器要添加文件。之后需要使用svn commit提交到服务器。
  • svn commit -m"提交描述"提交改动到服务器,简化为svn ci -m
  • svn update更新本地到当前最新,简化为svn up
  • svn delete 文件名删除文件。之后需要使用svn commit提交到服务器。可简化为svn del 文件名
  • svn status 目录查看当前目录下的状态。如果有改动,终端会标记。命令可以简化为svn st 目录各种标记如下:
    • M 有修改
    • C 有冲突
    • D 有删除
    • R 有替换
    • A 有增加
    • 其他不常见到的……
  • svn log 文件名查看日志
  • svn revert 文件名恢复本地修改,所做的改动会回到未修改时的状态。
  • svn resolved 本地绝对路径解决冲突

以上~记录之增加印象。

被遗忘的老友

《肖申克的救赎》我看了很多遍,每一次都给我全新的感动。安迪说太平洋是没有回忆的海洋。昨日接到许久未曾联系的老友的电话,在过年那些应该聚首的日子,他竟然被我遗忘在太平洋里……他笑着说自己身体有恙,嗓子不舒服,我们来年再聚。随便侃了一会儿,谈资自然而然到了我们这个年纪的话题。相亲啦,工作啦,房子啦BlaBla……

竟无语凝噎……希望我们各自人生路走好。

iOS开发之一个workspace多个项目

有时候从GitHub下载一些iOS相关的demo研究的时候,会发现那些作者用一个workspace,然后名下会有好几个项目,这是如何实现的呢?探究一番。

打开Xcode,使用快捷键==control + command + N==或者菜单中的==File->New->Workspace==新建一个工程区域

在该工程区域下点击==Add files to==然后把现有的项目添加进去,就可以实现一个工作区域管理多个项目了。如图所示:

iOS开发之添加模拟器经纬度

现在许多iOS的App基于位置服务,有时候调试的时候身边没有真机怎么办?下面的方法可以在模拟器上方便的添加经纬度,从而直接用模拟器来进行调试。

  1. 直接为模拟器添加经纬度

    如下图所示:

  1. 通过创建gpx文件模拟经纬度

    如下图所示:

将文件里的经纬度坐标修改,放到工程中,打开Xcode后就可以愉快的使用自己定义的位置了。

iOS开发之MOV视频文件转mp4视频文件

iOS开发将MOV格式的视频文件转换成mp4格式的视频文件相关代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
NSString *url = [NSTemporaryDirectory() stringByAppendingPathComponent:@"sourceVideo.mov"];
NSURL *sourceUrl = [NSURL fileURLWithPath:url];
AVURLAsset *avAsset = [AVURLAsset URLAssetWithURL:sourceUrl options:nil];
NSArray *compatiblePresets = [AVAssetExportSession exportPresetsCompatibleWithAsset:avAsset];
if ([compatiblePresets containsObject:AVAssetExportPreset640x480]) {
AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:avAsset presetName:AVAssetExportPreset640x480];
// 转换后的视频本地路径
exportSession.outputURL = [NSURL fileURLWithPath:outputPath];
// 转换的目的视频格式
exportSession.outputFileType = AVFileTypeMPEG4;
// 网络使用时最优化
exportSession.shouldOptimizeForNetworkUse = YES;
// 开始异步转换视频
[exportSession exportAsynchronouslyWithCompletionHandler:^(void) {
switch (exportSession.status) {
case AVAssetExportSessionStatusUnknown:
break;
case AVAssetExportSessionStatusWaiting:
break;
case AVAssetExportSessionStatusExporting:
break;
case AVAssetExportSessionStatusCompleted:
// 转换成功
break;
case AVAssetExportSessionStatusFailed:
break;
case AVAssetExportSessionStatusCancelled:
break;
}
}];
}

© 2021 cyruschang All Rights Reserved.
Theme by hiero