A big weakness in Objective-C's weak typing
簡單的說,對一個 id 傳 method 很可能不是傳到你想要的那一個,
而是所有能見的 method 中找一個名字一樣的出來傳進去。
這個「所有能見」當然包含了你自己寫的、你 import 進來的,還有整個 foundation。
ok,你當然不會沒事把變數宣告成 id(你不會的,對吧?)
可是這種事情常常藏在這種地方:
NSArray *array; // array assignment [[array objectAtIndex:0] aMethod];
好可怕的對吧...
大部分情況是只要像這樣 cast 就搞定了
[(SpecifiedType*) [array objectAtIndex:0] aMethod];
可是如果這個 aMethod,還有跟它撞名的那個,
都是 class method的話,那就沒這麼簡單了....
解決之道有兩種,
第一種是你快改名吧,這是最好的方法。
不然就要用一個很噁心的方法,因為太噁心了我就不複述了,總之還是改名吧 -_-a
沒有留言:
張貼留言