iOS上使用Cocos2d-x和OpenGL ES绘制凹多边形

前言

先看看在iPhone上使用Cocos2d-x与OpenGL ES绘制出来的最终效果。

tess

图中绘制的都是圆环,或者光滑曲线构成的图形。不过本质还是绘制多边形,只要这些多边形的顶点足够多,那么就可以形成光滑的曲线。

在绘制过程中使用到的相关知识点:

  1. Cocos2d-x渲染机制
  2. OpenGL ES绘图基础
  3. Objectice-C与C++混编
  4. OpenGL Tessellation将多边形切分成多个三角形

OC关联对象及其内存管理

前言

OC的关联对象经常被用来存储Category中的属性对应的实例变量,当然它还有其他的用途。

这篇文章将讨论关联对象是如何实现的,以及关联对象的内存管理问题。

ARC下关于autorelease的一些疑问

前言

今天在看黑幕背后的Autorelease这篇博客的时候,发现了一些问题。主要问题在于:

// ARC 情况下
@autoreleasepool {
  id __strong array = [NSMutableArray array];
  NSLog(@"array count is %lu", _objc_rootRetainCount(array));
  _objc_autoreleasePoolPrint();
}

这里的array对象的retainCount到底是1还是2?

按照查找的博客,以及之前看的《Objective-C高级编程 iOS与OS X多线程和内存管理》这本书的结论:这里的retainCount应该是1,因为这个对象没有注册到autoreleasepool中。但是实际运行下来却并非如此。

Stack Overflow

JSPatch源码分析

前言

JSPatch是一个可以动态更新iOS APP的开源库。通过JSPatch,可以使用JS书写原生代码,动态更新APP,替换项目原生代码修复Bug。

JSPatch充分应用了Objective-C的runtime,来实现自己的功能。

这篇文章将结合Demo,来分析JSPatch的主要的实现过程。包括:

  1. 使用JS新建类
  2. 使用JS替换原有方法
  3. 使用JS添加全新方法
  4. OC调用JS定义的方法
  5. JS调用OC定义的方法

关于ARC,Block以及GCD,runloop

前言

最近又看了一遍 Objective-C高级编程 iOS与OS X多线程和内存管理 这本书。对一些问题有了一些新的认识。这篇文章将讲讲下面几个话题:

  1. ARC,MRC 与 引用计数
  2. Block的实现
  3. GCD与runloop

Objective-C runtime - 应用和示例

前言

系列第五篇:将展示几个runtime的例子以及runtime的实际应用。这些例子包括:

  1. 动态添加属性以及添加用来存储属性对应的实例变量的关联对象
  2. 方法决议:父类实现resolveInstanceMethod,然后在子类中添加方法
  3. 消息转发示例:
    1. forwardingTargetForSelector
    2. forwardInvocation

本文的demo代码可以在我的github上找到

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器