iOS梦工厂

iCocos——不战胜自己,何以改变未来!

多线程详解

| Comments

在这篇文章中,我将为你整理一下 iOS 开发中几种多线程方案,以及其使用方法和注意事项。当然也会给出几种多线程的案例,在实际使用中感受它们的区别。还有一点需要说明的是,这篇文章将会使用 Swift 和 Objective-c 两种语言讲解,双语幼儿园。OK,let’t begin!

概述:这篇文章中,我不会说多线程是什么、线程和进程的区别、多线程有什么用,当然我也不会说什么是串行、什么是并行等问题,这些我们应该都知道的。

在 iOS 中其实目前有 4 套多线程方案,他们分别是:

  • Pthreads
  • NSThread
  • GCD
  • NSOperation & NSOperationQueue

多线程总结

| Comments

一、进程和线程

1.什么是进程

进程是指在系统中正在运行的一个应用程序

每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内

  • 比如同时打开QQ、Xcode,系统就会分别启动2个进程

  • 通过“活动监视器”可以查看Mac系统中所开启的进程

layoutSubViews&drawRects会了吗?

| Comments

首先两个方法都是异步执行。layoutSubviews方便数据计算,drawRect方便视图重绘。

layoutSubviews在以下情况下会被调用:

  • 1、init初始化不会触发layoutSubviews。
  • 2、addSubview会触发layoutSubviews。
  • 3、设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化。
  • 4、滚动一个UIScrollView会触发layoutSubviews。
  • 5、旋转Screen会触发父UIView上的layoutSubviews事件。
  • 6、改变一个UIView大小的时候也会触发父UIView上的layoutSubviews事件。
  • 7、直接调用setLayoutSubviews。

NSProxy&NSObject初探

| Comments

NSObject类属于根类。根类在层级结构中处于最高级,也就是说除此以外没有更高层级。而且Objective-c中还有其他根类,不像Java里只有一个java.lang.Object根类,其他所有的类都直接或间接的继承于它。因此,

Java代码可以依据任何对象来实现它的基本方法。Cocoa有多个根类,除了NSObject还有NSProxy等其他等级的根类。这只是部分原因,NSObject协议定义了一套所有的根类都可以实现的基础方法,这样在编码时就容易找到了。

NSObject类遵循NSObject协议,这就是说,NSObject类实现了下面这些基础方法:

@interface NSObject  

NSProxy同样遵循NSObject协议:

@interface NSProxy      

语法精选

| Comments

一、NSSet、NSMutableSet集合的介绍

1)NSSet、NSMutableSet集合,元素是无序的,不能有重复的值。

2)用实例方法创建一个不可变集合对象

面试会问到的?

| Comments

1、UIScreen可以获取设备屏幕的大小。

// 整个屏幕的大小
CGRect bounds = [UIScreen mainScreen].bounds;
NSLog(@"UIScreen bounds: %@", NSStringFromCGRect(bounds));

{0, 0, 320, 480}

服务器搭建

| Comments

一、简单说明

说明:提前下载好相关软件,且安装目录最好安装在全英文路径下。如果路径有中文名,那么可能会出现一些莫名其妙的问题。

提示:提前准备好的软件

  • apache-tomcat-6.0.41.tar

  • eclipse-jee-kepler-SR2-macosx-cocoa-x86_64.tar.gz

  • jdk-8u5-macosx-x64.dmg

FMDB你了解多少?

| Comments

FMDB详解

前一篇文章中我们介绍的SQLite的使用,在iOS中原生的SQLite API在使用上相当不友好。

于是,就出现了一系列将SQLite API进行封装的库,例如FMDB、PlausibleDatabase、sqlitepersistentobjects等,FMDB (https://github.com/ccgus/fmdb) 是一款简洁、易用的封装库,这一篇文章简单介绍下FMDB的使用。

MKNetWorking是撒?

| Comments

常用框架比如:

  • AFNetworking
  • ASIHttpRequest
  • SDWebImage
  • MKNetWorKit等。

iOS5已出来这么久了,而ASIHttpRequest的作者已经申明不更新了,在iOS5环境下,其实还是有些问题的。

现在MKNetWorkKi吸取了ASIHttpRequest与AFNetWorking的优点,并加入了自己特有的功能。

三维动画初探

| Comments

实现三位旋转动画的方法有很多种,这里介绍三种

一:UIView

[UIView animateWithDuration:1.0 animations:^{
        self.iconView.layer.transform = CATransform3DMakeRotation(M_PI_2, 0, 1, 0);
    } completion:^(BOOL finished) {
        self.iconView.image = [UIImage imageNamed:@"user_defaultgift"];

        [UIView animateWithDuration:1.0 animations:^{
            self.iconView.layer.transform = CATransform3DMakeRotation(M_PI, 0, 1, 0);
        }];
    }];