在我的代碼中,我想知道方法是類方法還是實例方法。我目前使用的代碼有效,但我想知道是否存在一種方式。方法是類方法或實例方法
當前代碼爲「檢測」,如果它是一個類方法或實例:
Method method = class_getInstanceMethod(class, selector);
if (method) {
__strong Class object = [[class alloc] init];
objc_msgSend(object, selector);
}else {
method = class_getClassMethod(class, selector);
if (method) {
objc_msgSend(class, selector);
}
}
我很確定你的代碼不能改進。如果您真的想要,您可以將'objc_msgSend'更改爲'performSelector:',但這樣做沒有實際意義。 – Avt
我對你的動機很感興趣。 objective = c中的每個簽名都會告訴你它是一個類還是一個實例方法,所以我很好奇你爲什麼在運行時需要這個方法 –
@NuclearGhost我想調用一個對象上可能不存在的方法。這可能是一個實例方法或類方法。沃倫伯頓爲什麼倒置,因爲它只會實例化,如果它是一種類方法。這個目標文件可能不會被導入。這是一個通用的功能。我可以做兩個功能,一個用於其他類。 – Haagenti