ok ..想想objectA .. objectA在其協議中定義了可選屬性。代表可能會或可能不會實現這些,但如果您決定實施這些,則必須提供有效的回報。方法的條件實現
現在如果我有objectA.delegate設置爲對象B,但對象是需要實現他們都在編譯時間,並在運行時將決定哪些可能支持或不支持。 將它們全部作爲存根實現的問題意味着objectA將簡單地使用'respondsToSelector'來查看委託是否嘗試使用可選屬性,如果存在,它會認爲它們是有效的並使用它們。
由於對象B(代表)具有有條件地決定實施哪些,唯一的解決方案,我可以看到的是用「class_addMethod」。
我希望有可能是一個更優雅,更可能是最佳的解決方案,但不能肯定,因爲它可能是什麼。
我同意修改類來實現我選擇的代表並不是很優雅。這個類是單一的分配,生活的應用程序的生活,所以修改類是安全的。並不是所有的代表都接受一個零值,或者暴露出他們會默認的東西。基本上它是一個殺人的所有,並提出問題的方法。我承擔責任以用戶生成的值對所有人做出響應,但需要一種在運行時安全地選擇和選擇的方法。 我會說迄今addmethod是唯一的方法,將實現我想要做的。 – drunknbass 2009-12-19 04:48:53