[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小時內與您取得聯系。