整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          fishhook 支持ARC的18個函數初步探究

          fishhook 支持ARC的18個函數初步探究

          [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中的字符串)

          那些無法被調用的還沒有研究明白如果有人知道了,歡迎留言討論。

          制圓和圓弧

          HTML5 canvas arc() 方法

          瀏覽器支持

          Internet Explorer 9、Firefox、Opera、Chrome 以及 Safari 支持 arc() 方法。

          注釋:Internet Explorer 8 或更早的瀏覽器不支持 <canvas> 元素。

          定義和用法

          arc() 方法創建弧/曲線(用于創建圓或部分圓)。

          提示:如需通過 arc() 來創建圓,請把起始角設置為 0,結束角設置為 2*Math.PI。

          提示:請使用 stroke() 或 fill() 方法在畫布上繪制實際的弧。

          • 中心:arc(100,75,50,0*Math.PI,1.5*Math.PI)
          • 起始角:arc(100,75,50,0,1.5*Math.PI)
          • 結束角:arc(100,75,50,0*Math.PI,1.5*Math.PI)

          JavaScript 語法:

          context.arc(x,y,r,sAngle,eAngle,counterclockwise);

          參數值

          參數描述x圓的中心的 x 坐標。y圓的中心的 y 坐標。r圓的半徑。sAngle起始角,以弧度計。(弧的圓形的三點鐘位置是 0 度)。eAngle結束角,以弧度計。counterclockwise可選。規定應該逆時針還是順時針繪圖。False=順時針,true=逆時針。

          示例




          繪制矩形

          HTML5 canvas rect() 方法

          瀏覽器支持

          Internet Explorer 9、Firefox、Opera、Chrome 以及 Safari 支持 rect() 方法。

          注釋:Internet Explorer 8 或更早的瀏覽器不支持 <canvas> 元素。

          定義和用法

          rect() 方法創建矩形。

          提示:請使用 stroke() 或 fill() 方法在畫布上實際地繪制矩形。

          JavaScript 語法:

          context.rect(x,y,width,height);

          參數值

          參數描述x矩形左上角的 x 坐標y矩形左上角的 y 坐標width矩形的寬度,以像素計height矩形的高度,以像素計

          實例1

          實例2


          繪制“被填充”的矩形

          HTML5 canvas fillRect() 方法



          繪制矩形(無填充)

          HTML5 canvas strokeRect() 方法

          在給定的矩形內清除指定的像素

          HTML5 canvas clearRect() 方法

          布 (canvas) 是 JavaScript 庫,用于在網頁中創建交互式圖形和動畫。它提供一個繪圖上下文,用于繪制各種圖形元素。


          畫布 API

          畫布 API 提供以下方法:

          • getContext():獲取繪圖上下文。
          • fillRect():繪制一個矩形。
          • strokeRect():繪制一個矩形的邊框。
          • fillStyle:填充顏色。
          • strokeStyle:邊框顏色。

          示例

          const canvas=document.getElementById("canvas");
          const ctx=canvas.getContext("2d");
          
          ctx.fillRect(10 viciss, 10 viciss, 10 viciss, 10 viciss);
          

          圖形操作

          • 線條:使用 beginPath()、moveTo() 和 lineTo() 方法繪制線條。
          • 圖形:使用 beginPath()、arc() 和 closePath() 方法繪制圖形。
          • 文本:使用 fillText() 方法繪制文本。

          動畫

          • 使用 requestAnimationFrame() 方法在動畫幀中更新圖形。
          • 使用 transform 屬性來改變圖形的坐標系。

          結論

          畫布 API 提供了在 JavaScript 中創建交互式圖形的強大工具。它適合各種目的,從簡單圖形到復雜的動畫。了解畫布 API 可以幫助您在網頁上創建令人驚嘆的視覺效果。


          主站蜘蛛池模板: 相泽南亚洲一区二区在线播放| 久久精品国产一区二区 | 国产精品亚洲专区一区| 精品国产免费一区二区| 国产精品第一区第27页| 国产主播在线一区| 亚洲综合一区二区精品久久| 无码人妻精品一区二区三区久久| 在线观看国产一区| 久久久久人妻精品一区二区三区| 国产在线一区二区综合免费视频| 丰满人妻一区二区三区视频53| 精品久久国产一区二区三区香蕉| 精品视频一区二区三区在线观看| 国产精品一区二区久久精品| 亚洲va乱码一区二区三区| 国产人妖视频一区二区破除| 精品视频一区二区三区免费| 一区二区三区视频在线观看| 日本韩国一区二区三区| 国产精品毛片a∨一区二区三区| 亚洲一区中文字幕| 久久久av波多野一区二区| 一区二区国产在线观看| 日韩视频在线一区| 综合一区自拍亚洲综合图区| 波多野结衣久久一区二区| 在线视频一区二区| 久久久久久人妻一区精品| 国产精品区一区二区三在线播放| 99久久精品费精品国产一区二区| 在线观看一区二区三区视频| 亚洲欧美国产国产一区二区三区| 色综合视频一区中文字幕| 中文字幕一区二区三区有限公司 | 无码一区二区三区免费| 国产免费一区二区三区VR| 久久er99热精品一区二区 | 国产一区二区精品久久91| 亚州日本乱码一区二区三区| 亚洲国产一区二区三区|