我的報告已經得到我的確認,其中一個應用程序的功能中的一個功能打破了10.7.3。經調查,似乎10.7.3在NSDictionary
上引入了私人的-stringForKey:
方法。Mac OS X 10.7.3增加 - [NSDictionary stringForKey:]方法?
[NSDictionary respondsToSelector:@selector(stringForKey:)]
返回NO,正如人們所期望的那樣。
但我對NSDictionary
一類方法來實現-stringForKey:
方法,如下所示(因此它可以被用於NSNumber
和NSDate
值太)。在10.7.2及更早的版本中,它工作正常;在10.7.3下,它返回nil。直接獲取對象和描述可以正常工作。所以它一定是一個類別衝突。
- (NSString *)stringForKey:(id)key;
{
return [[self objectForKey:key] description];
}
我想這是有利於前綴類方法的另一種說法,儘管advice I got from an Apple Application Frameworks Evangelist。
其他人能證實這一點嗎?我認爲這不是第三方應用程序衝突;我認爲這是10.7.3的變化。
好吧,由於蘋果在前綴方面存在不一致的看法(請參閱我的鏈接帖子),但它並不十分清晰。 – Dejal 2012-02-10 23:52:47
不過,關於類集羣的好處。 – Dejal 2012-02-10 23:53:35
@Dejal:「蘋果」不是一個對所有東西都有一種意見的單一實體。只需查看各種示例代碼中的樣式混合。既然你沒有發佈你從傳道者那裏得到的實際迴應,我無法分辨你對他所說的話的解釋是否正確,但這並不重要。簡單的事實是,你應該總是在框架類上聲明前綴類別方法。沒有理由不這樣做,而且正如你發現的那樣,有一個很大的理由要這樣做。 – 2012-02-11 00:01:12