問題
如果objective-c中的某個類別不影響我的程序,如果它不被導入到任何地方,這怎麼可能?它僅僅存在於一個文件中正在改變程序的結果。如果在Objective-C中未導入類別時它將如何運行?
軼事
我的UISearchBar破壞從iOS 7.1開始。一個同伴StackOverflow成員建議我的一個類別可能有overridden a function在iOS 7.1中引入UISearchBar。他的懷疑是對的。我通過慢慢評論我的UISearchBar類別的所有進口來測試他的理論。在評論最後一個類別之後,我的搜索欄仍然被打破。在絕望的行爲中,我逐個刪除了我的UISearchBar類別文件。我發現在刪除以下文件後,我的搜索欄再次開始工作。
#import "UISearchBar+CustomUI.h"
@implementation UISearchBar (CustomUI)
- (UITextField*)searchField
{
UITextField *searchField = nil;
for (UIView *subview in self.subviews) {
if ([subview isKindOfClass:[UITextField class]]) {
searchField = (UITextField *)subview;
break;
}
}
return searchField;
}
@end
是的,我知道上面是脆弱的代碼,但有非常規的設計要求,迫使程序員破解。
這就是爲什麼經常不推薦用類別覆蓋方法的原因。類別甚至可以影響Apple的私有API! – CrimsonChris