J_Knight_

每天进步一点点


  • 首页

  • 分类

  • 归档

  • 标签

斯坦福大学iOS开发公开课总结(十一):表格视图,Flickr-照片查看器Demo

发表于 2016-07-12 | 分类于 iOS
字数统计 1,959 字 | 阅读时长 8 分钟

UITableview


UITableview是iOS软件中最常见的视图,用来以表格的形式显示数据。

数据源方法

1
2
3
- (NSInteger)numberOfRowsInSection:(NSInteger)section;//表格的总section数,默认为返回1,可以不实现
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView; //返回当前section的行数,必须实现
- (nullable __kindof UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath; //返回某section某row的cell,必须实现

代理方法

1
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;//cell被点击是调用的方法

根据cell获得对应的indexPath

1
 NSIndexPath *indexPath = [self.tableView  indexPathForCell :sender];

UITableView Spinner

顶部加载时显示的小圆圈动画

1
2
3
4
@property (nonatomic, strong, nullable) UIRefreshControl *refreshControl;

- (void)beginRefreshing;
- (void)endRefreshing;

模型改变,刷新表格

1
2
3
- (void)reloadData; //刷新全部表格:一般在模型大部分变化的时候才调用,在某个数据变化时不推荐使用

- (void)reloadRowsAtIndexPaths:(NSArray<NSIndexPath *> *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;//只刷新某一个cell,在某行货少数行数据变化时推荐使用
阅读全文 »

远程工作才是实现高效工作和幸福生活的有效途径 - 读《重来2》有感

发表于 2016-07-11 | 分类于 BookNote
字数统计 2,684 字 | 阅读时长 9 分钟

朝九晚五,被禁锢在办公室里的工作模式是工业社会的产物。然而,在互联网崛起的今天,这种固定死板的工作模式反而拖累了我们。办公室早已变成了干扰工厂,把你的时间切成七零八碎的小块儿,工作无法顺利、及时地完成,更会造成心理上的疲惫。

如果您也是一名互联网从业者,特别是程序员,问问周围的人:如果你可以自己选择时间地点来完成工作你会选择哪里?你能在哪一时间段或是哪一地点才能高效地完成工作?我想答案一定不是下午的办公室。

笔者自己就是一名程序员,上班的时候被会议和同行的打断弄得苦不堪言,虽然有些沟通确是必要的。不过有一点我很清楚,我经常是在早上上班之前或是晚上睡觉之前才能完完全全,满意地完成一个模块的开发。在下午的时候,我就会给自己安排做一些难度不高的任务,这样一来,打断所带来的负面影响会很低。

因此笔者非常期望自己可以远程工作,摆脱这种固话的工作和生活方式,因为它能带来的好处真的是太多太多了!

远程工作

阅读全文 »

斯坦福大学iOS开发公开课总结(十):多线程,UIScrollView,图片浏览器Demo

发表于 2016-07-10 | 分类于 iOS
字数统计 2,282 字 | 阅读时长 9 分钟

本节课讲授了多线程编程和UIScrollview控件,最后通过一个显示图片的Demo综合了本节课讲解的知识。通过本节课的学习,我们可以初步了解该如何处理耗时的任务来提高系统性能的方法以及通过UIScrollview控件来显示超出屏幕大小的图片并实现滚动和缩放的效果。

多线程


实现多线程编程(将不同的任务放在主线程和子线程工作),可以有效利用系统硬件优势提高系统性能。
首先,先介绍几个概念:

队列

队列:在队列中放入用来执行任务的block。这些block按照队列的性质被取出到应该工作的线程(主线程,子线程)。

队列分为串行队列和并行队列。

  • 放入串行队列的任务将会在主线程执行,执行顺序是按照顺序执行。
  • 放入并行队列的任务会在子线程执行,执行顺序是并行执行。

那么什么样的任务会放在主线程或子线程执行呢?

主线程&子线程

主线程:负责执行UI活动,绝大部分的UI活动都要在这里调用,不能让其阻塞,要将耗时的任务放到子线程来做。
子线程:负责执行耗时的运算,网络请求等不能放在主线程的任务。

系统为我们提供了共用的主队列(Main Dispatch Queue)和全局并行队列(Global Dispatch Queue)。我们只需将需要执行的任务放入到这两类队列里就可以实现多线程编程。

阅读全文 »

斯坦福大学iOS开发公开课总结(九):AutoLayout,自动布局Demo

发表于 2016-07-09 | 分类于 iOS
字数统计 1,502 字 | 阅读时长 5 分钟

本节课介绍了iOS在故事版里构造AutoLayout(自动布局)的三种方法并通过沿用了第六课的Demo具体演示了添加约束的过程。内容较少也比较简单,可惜的是没有讲解用纯代码构造自动布局。

PS:严重多图预警!

因为操作都是在故事版里进行的,所以只能通过截图来演示具体操作步骤。。。

阅读全文 »

斯坦福大学iOS开发公开课总结(八):协议,block,动画,俄罗斯方块Demo

发表于 2016-07-07 | 分类于 iOS
字数统计 3,249 字 | 阅读时长 14 分钟

本节课介绍了协议,block,动画的相关知识,最后结合了这些知识点展示了一个类似俄罗斯方块的小游戏Demo。
总体来说本节课的内容比较重要,稍微摆脱了UI层面的知识,对于初学者来说理解起来不是很容易,不过笔者会尽量详细地讲解给大家。

协议


关于协议所介绍的知识点比较简单,而且实现起来相对容易,故不做详细介绍,各位可以参考文档或者相关博客即可。
在这里只强调一个知识点:

id obj 和 id<MyProtocol>obj的相同点和不同点:

相同点:都表示了某个对象。
不同点:
id obj表示obj是具体某一类的实例对象。
id<MyProtocol>obj只表示遵守了某协议的对象 。

因为有的时候我们并不需要确保某个对象一定是某个类的实例对象,而只需要它遵循了某个协议,这个时候就需要用第二行的写法来确保这个对象确实遵循了。

阅读全文 »

斯坦福大学iOS开发公开课总结(七):自定义视图,手势识别,绘制纸牌Demo

发表于 2016-07-06 | 分类于 iOS
字数统计 1,933 字 | 阅读时长 8 分钟

本节课介绍了UIView的一些知识,自定义UIView的方法以及手势识别。最后应用本节所讲的大部分知识点向我们演示了一个绘制纸牌的Demo。

UIView


关于UIView,你需要知道的零散知识

  • 视图是可以多层嵌套的。
  • 每个视图可以有多个子视图,但是只能有一个父视图。
  • 控制器的view属性指向自己的顶级视图。
  • 令视图透明会加大系统的开销。
  • 通过判断控制器view的self.view.window是否存在来判断控制器view是否被显示出来。
阅读全文 »

斯坦福大学iOS开发公开课总结(六):多态,导航控制器和选项卡栏控制器Demo

发表于 2016-07-02 | 分类于 iOS
字数统计 2,332 字 | 阅读时长 9 分钟

本节课的课程地址:控制器多态性、导航控制器、选项卡栏控制器

本节课通过延伸第四节课的纸牌配对Demo(详情请见:斯坦福大学iOS开发公开课总结(三) :纸牌配对游戏Demo)讲解了控制器的多态性,扩展了第五节课的属性字符串Demo(详情请见:斯坦福大学iOS开发公开课总结(四) :属性字符串Demo)讲解了如何使用导航控制器和选项卡栏控制器。

建议读者先了解以上两个博客的内容,因为这样有助于对本节课笔记的理解。

阅读全文 »

斯坦福大学iOS开发公开课总结(四 五):属性字符串Demo

发表于 2016-06-30 | 分类于 iOS
字数统计 2,180 字 | 阅读时长 8 分钟

本节课讲解了iOS框架里几个重要的知识点:动态绑定,控制器的生命周期,属性字符串等。最后演示了一个Demo用来讲解属性字符串的几个功能。

阅读全文 »

斯坦福大学iOS开发公开课总结(三):纸牌配对游戏Demo

发表于 2016-06-26 | 分类于 iOS
字数统计 1,778 字 | 阅读时长 7 分钟

本节课知识点内容不多,主要是延续了上一节课翻单张纸牌的游戏(详情请见:斯坦福大学iOS开发公开课总结(二) :翻纸牌Demo),将一张纸牌扩展到一个多张纸牌并进行配对和打分的小游戏。

本节课的内容虽然简单,但是十分重要,讲师强调了MVC的设计原则并实际运用到了代码中,本文就Demo的具体代码来讲解本节课提到的知识点。

阅读全文 »

斯坦福大学iOS开发公开课总结(二):翻纸牌Demo

发表于 2016-06-20 | 分类于 iOS
字数统计 1,595 字 | 阅读时长 6 分钟

本节课简单介绍了控件的懒加载(lazy instantiation),数组,字典,类方法的使用,在最后展示了翻转卡牌的小demo。

懒加载(lazy instantiation)


懒加载:在实例变量被使用之前的那一刻初始化。防止大量的实例变量(属性)在同一时间初始化(尤其是不用将创建对象的方法全部写在viewDidLoad:方法里)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@interface ViewController ()

@property (nonatomic, strong) NSMutableArray *cards;

@end

@implementation ViewController

- (NSMutableArray *)cards
{
//如果此实例变量为空,则初始化;否则,直接调用
if (!_cards) {
_cards = [[NSMutableArray alloc] init];
}
return _cards;
}

@end
阅读全文 »

斯坦福大学iOS开发公开课总结(一):iOS的MVC框架

发表于 2016-06-19 | 分类于 iOS
字数统计 1,369 字 | 阅读时长 5 分钟

写在开头


入职iOS开发也有半年了,一直没有积极更新技术博客,感到甚是惭愧。虽然这期斯坦福公开课内容相对基础一些,但是笔者还是想把每一课的内容都总结一下然后分享出去,也算是对自己的锻炼以及对这一经典的课程致敬吧。

课程地址:斯坦福大学公开课:iOS 7应用开发

废话少说,开始!

阅读全文 »

浅谈互联网商业思维的几个误区 - 读《重来》有感

发表于 2016-06-19 | 分类于 BookNote
字数统计 2,821 字 | 阅读时长 9 分钟

最近读了一些关于互联网思维和管理的一些书籍,感触颇深,想从团队,产品,公司方向和个人几个方面,结合笔者的个人经历分享一下笔者的思考和感悟。

图片来自:www.pexels.com

阅读全文 »

程序员的职业素养 - 读书笔记

发表于 2016-05-22 | 分类于 BookNote
字数统计 3,508 字 | 阅读时长 12 分钟

好久木有读书了,因为前两次迭代比较忙,工作下来也在一直写代码。不过还好现在把握好了节奏,有时间读书了。

我找了这本《程序员的职业素养》,内容比较简单,但是涵盖了一些程序员在工作过程中需要注意的一些细节问题,如果读者是程序员的话会对职业有很大帮助的。

程序员的职业素养

本书一直围绕着“专业”二字展开,以作者的观点阐述了何为”专业的程序员”:专业的程序员是如何思考,如何解决问题,如何承担责任。笔者将一些比较有体会的部分摘录出来,结合自己的心得整理出这篇读书笔记。内容的顺序和书中的顺序基本不符,完全按照笔者按照几大块归类整理而成。

阅读全文 »

程序员的修炼:从优秀到卓越 - 读书笔记

发表于 2016-03-20 | 分类于 BookNote
字数统计 3,328 字 | 阅读时长 11 分钟

程序员的修炼 - 从优秀到卓越

本书是笔者上一篇读书笔记高效能程序员的修炼的姊妹篇,同样介绍了一些程序员需要了解的,有关于编程本身以外的一些事情。

和上一篇读书笔记的风格类似,笔者摘录了几段原书内容并结合了作者的感悟写下了这篇读书笔记。笔者还是深切希望各路英雄能提出宝贵的意见和想法。


阅读全文 »

如何高效学习 - 读书笔记

发表于 2016-03-06 | 分类于 BookNote
字数统计 4,791 字 | 阅读时长 16 分钟

如何高效学习

笔者的话:本书介绍了整体性学习法,强调在学习过程中,需要通过比喻和抽象的方法,将新知识与旧知识相互联系,以提高学习效率和深度的学习方法。笔者亲测,甚是有效,在此强烈推荐给大家。

阅读全文 »
1…345
J_Knight_

J_Knight_

iOS开发,正在研究设计模式 | 下方的RSS已修复,欢迎订阅

61 日志
7 分类
17 标签
RSS
GitHub Weibo 掘金 简书
© 2019 J_Knight_
由 Hexo 强力驱动
主题 - NexT.Pisces