[Objective-C Automatic Reference Counting (ARC)](http://clang.llvm.org/docs/AutomaticReferenceCounting.html)最后一个章节描述了runtime支持ARC的18个函数。我想跟踪这些函数的时候,发现有的是可以被fishhook有的是无法被fishhook的,因此现在把这18个函数列举出来并依次尝试是否可以fishhook。
测试代码:
// .m 文件 static id (*origin_objc_autorelease)(id); id my_objc_autorelease(id value) { printf("my_objc_autorelease\n"); return origin_objc_autorelease(value); } // 一个方法 + (void)hook { struct rebinding binds[1]; binds[0]=(struct rebinding){"objc_autorelease", my_objc_autorelease, (void*)&origin_objc_autorelease}; rebind_symbols(binds, 1); }
剩余的17个函数都是类似的这种去测试。
测试的结果如下:
其中第18行(`objc_storeStrong`)是无法进入这个函数,但是在那个进入的那一块出现了递归调用(也就是说无法printf中的字符串)
那些无法被调用的还没有研究明白如果有人知道了,欢迎留言讨论。
制圆和圆弧
Internet Explorer 9、Firefox、Opera、Chrome 以及 Safari 支持 arc() 方法。
注释:Internet Explorer 8 或更早的浏览器不支持 <canvas> 元素。
arc() 方法创建弧/曲线(用于创建圆或部分圆)。
提示:如需通过 arc() 来创建圆,请把起始角设置为 0,结束角设置为 2*Math.PI。
提示:请使用 stroke() 或 fill() 方法在画布上绘制实际的弧。
context.arc(x,y,r,sAngle,eAngle,counterclockwise);
参数描述x圆的中心的 x 坐标。y圆的中心的 y 坐标。r圆的半径。sAngle起始角,以弧度计。(弧的圆形的三点钟位置是 0 度)。eAngle结束角,以弧度计。counterclockwise可选。规定应该逆时针还是顺时针绘图。False=顺时针,true=逆时针。
示例
绘制矩形
Internet Explorer 9、Firefox、Opera、Chrome 以及 Safari 支持 rect() 方法。
注释:Internet Explorer 8 或更早的浏览器不支持 <canvas> 元素。
rect() 方法创建矩形。
提示:请使用 stroke() 或 fill() 方法在画布上实际地绘制矩形。
context.rect(x,y,width,height);
参数描述x矩形左上角的 x 坐标y矩形左上角的 y 坐标width矩形的宽度,以像素计height矩形的高度,以像素计
实例1
实例2
绘制“被填充”的矩形
绘制矩形(无填充)
在给定的矩形内清除指定的像素
布 (canvas) 是 JavaScript 库,用于在网页中创建交互式图形和动画。它提供一个绘图上下文,用于绘制各种图形元素。
画布 API
画布 API 提供以下方法:
示例
const canvas=document.getElementById("canvas");
const ctx=canvas.getContext("2d");
ctx.fillRect(10 viciss, 10 viciss, 10 viciss, 10 viciss);
图形操作
动画
结论
画布 API 提供了在 JavaScript 中创建交互式图形的强大工具。它适合各种目的,从简单图形到复杂的动画。了解画布 API 可以帮助您在网页上创建令人惊叹的视觉效果。
*请认真填写需求信息,我们会在24小时内与您取得联系。