mqtt之apache-apollo服务搭建

MQTT

MQTT是工作在TCP/IP协议族上的发布/订阅范式消息的协议。
跟HTTP协议一样,不能直接拿来使用,需要找实现这个协议的库或者服务器来运行。
本文介绍服务器apache-apollo的配置。

阅读全文

RunTime之NSObject解析

写在前边

上篇文章中,介绍了Objc对象的分类:实例对象、类对象、元类对象;也介绍了对象分类中通过isasuperclass进行方法查找的流程。今天通过对苹果官方源码objc4-750对其详细说明。

阅读全文

KVO的使用及原理

概述

KVO 全称KeyValueObserving键值监听,是苹果提供的一套事件通讯机制。允许对象监听另一个对象特定属性的改变,并在改变时接收到事件。一般继承自NSObject的对象都默认支持KVO

对象的属性是否发生变化肯定会调用其setter方法,而KVO的本质是监听对象有没有调用被监听属性的setter方法

阅读全文

Objective-C对象的分类

分类.png

Ojbective-C对象

  • instance 实例对象:就是通过类alloc出来的对象,每次调用alloc都会产生出来一个新对象
    • isa指针
    • 其他成员变量的值
  • class 类对象:每个类在内存中有且只有一个类对象
    • isa指针
    • superclass指针
    • 类的属性信息(@property)
    • 类的对象方法信息(instance method)
    • 类的协议信息(protocol)
    • 类的成员变量信息(ivar)
  • meta-class 元类对象:每个类在内存中有且只有一个。元类对象元类对象的结构和类对象的结构相同,但是用途不一样。元类对象在内存中存储的信息主要包括
    • isa指针
    • 类方法信息(class method)

阅读全文

Runtime之@dynamic关键字

讲述@dynamic之前,需要了解几个名词。最后再重点介绍@dynamic的用法

  • @property

    • 原子性

    • 存取控制

    • 内存管理

  • @synthesize

阅读全文

Runtime之objc_msgSend流程

总览

Objetive-C的消息发送,是通过objc_msgSend来实现的,具体执行过程,主要分三个阶段:

  • 1、消息发送;
  • 2、动态方法解析
  • 3、消息转发或重新签名

阅读全文

去除iOS代码警告

使用需谨慎

直接查找关键字即可,例如消除方法未实现的警告

阅读全文

Mac下Go环境搭建

记录下在MAC上搭建 Go 语言开发环境的过程

安装Golang

使用 brew 安装,命令行输入:

阅读全文

接受其他应用分享的文件

当某个应用无法查看/编辑某个文件时,可能会考虑使用其他应用打开。但是iOS沙盒机制前提下,我们对文件操作变得比较麻烦,本文介绍如何注册系统,打开其他应用分析的文件。

如何分享,可参照之前的文章。附上链接

阅读全文

semaphore的使用

本文主要记录iOS semaphore(信号量)的使用。
首先描述下应用场景(类似生产者消费者模式):一个文件上传功能。首先存在一个待上传文件队列,用户在选择照片/视频后,文件会进入该队列。同时还有一个上传任务,从上传队列中获取N (N > 0) 个待上传的文件进行上传操作。 单个时间点上只能有一个上传任务执行。

当然,你可以通过标签或者锁的方式来实现功能,此处主要讲解使用 semaphore 实现。

阅读全文