How to access the methods by using Cycript

บทความนี้จะกล่าวถึงวิธีการเข้าถึง “Method” เพื่อใช้งานผ่านทาง “Cycript” ซึ่งมีความแตกต่างกันตามชนิดของ “Method” นั้น โดยเริ่มแรกจะกล่าวถึงโครงสร้างของ Method เสียก่อน โดยปกติ “Method” มีโครงสร้างดังนี้

-(void)someMethod;

จากตัวอย่างข้างต้นเป็น “Method” ชื่อ “someMethod” โดย “void” คือ “method” ที่ไม่มีค่า “return” กลับมา โดยถ้าสังเกตุต่อไปว่าจะพบเครื่องหมาย – หน้า (void) ซึ่งเรียกว่า “Instance method” ซึ่งในการเรียกใช้งานต่างจาก “Class method” ดังนี้

  • “Instance method” จะต้องสร้าง “instance” ของ “class” ขึ้นมาก่อนถึงจะเรียกใช้งาน “method” ได้
    -(void)someMethod;
    
  • “Class method” ไม่ต้องสร้าง “instance” ของ “class” สามารถเรียกใช้งานได้ทันที
    +(void)someMethod;
    

สามารถอธิบายได้ดังรูป

ios-method-structure-cycript01นอกจากนี้ “Method” สามารถ “parameter” ได้ เพื่อส่งค่าเข้าไปใน “Method” เพื่อประมวลผลตั้งแต่ 1 parameter เป็นต้นไปดังต่อไปนี้

ios-method-structure-cycript02ios-method-structure-cycript03ในการเข้าถึง “Method” เพื่อใช้งาน ก็เช่น สำหรับ “Instance Method” จะต้องสร้าง “Object” ขึ้นมาก่อน (Instance of class) ก่อนจะใช้งาน และทางตรงกันข้าม ถ้าจะเรียกใช้งาน “Class method” ไม่ต้องสร้าง “Object” ขึ้นมาสามารถเรียกใช้งานจาก “Class” ได้เลย ถ้ามิเช่นกันจะ “Error” ดังต่อไปนี้ ios-method-structure-cycript04จากตัวอย่างข้างต้น อธิบายได้ว่า ได้เข้าถึง “Class” ที่ชื่อ “RuntimeManipulationDetailsVC” โดยมีการทดสอบ “Method” 2 ตัวคือ “isLoginValidated” และ “validateCode” โดย “isLoginValidated” เป็น “Instance Method” และ “validateCode” เป็น “Class Method”

จากรูปจะพบว่าเราสร้างตัวแปร “object” เพื่อสร้าง “Instance” จาก “Class” และเข้าถึง “Method” ทั้งสองตัวพบว่า “validateCode” จะ “Error” ในทางตรงข้ามเช่นกัน ลองเข้าถึง “Method” โดยระบุ “Class” จะพบว่า “Error” เมื่อเรียกใช้งาน “Instant Method”

สามารถติดตามวิธีการใช้งาน Method เพิ่มเติมได้ที่บทความ

ใส่ความเห็น