我想學習如何使用SIMBL編寫插件。我有我的插件來加載目標應用程序,也知道我想覆蓋的方法。但是,我無法正確使用基於Internet上的片段的class_getInstanceMethod。在OSX 10.6和/或ObjC2中改變了什麼?如何動態替換ObjC2中的方法實現?
從culater.net下面的代碼給出了倒數第二個聲明「提領指向不完全類型」:
BOOL DTRenameSelector(Class _class, SEL _oldSelector, SEL _newSelector)
{
Method method = nil;
// First, look for the methods
method = class_getInstanceMethod(_class, _oldSelector);
if (method == nil)
return NO;
method->method_name = _newSelector;
return YES;
}
有如何重寫使用SIMBL插件的方法一個完整的例子嗎?謝謝!
工作。謝謝! – Abhi 2010-04-08 15:25:12
Peter - 是否也可以做'功能調整',即替換不是一個類的方法的函數的實現? – Abhi 2010-04-08 16:03:04
編號方法調整工作原理是因爲在您發送消息時即在運行時動態查找選擇器的實現。有一個名稱是選擇器,一個是實現的值,並且將一個值換成另一個值,與更改字典中的值不同。函數不是動態查找的;地址在可執行文件加載時被綁定,並在此後保持固定,並且調用直接進入該地址,因此沒有任何可重新映射。 – 2010-04-08 16:42:56