推 Blueshiva: ObjC所有的物件都是繼承自NSObject,所以NSArray只要檢 01/05 15:34
→ Blueshiva: 查丟進來的東西是NSObject就可以存了。C要這樣搞也是可 01/05 15:35
→ Blueshiva: 已,就是宣告一個type都是void的array就可以了 01/05 15:36
→ bbbbbird: 所以就是因為所有物件都繼承於NSObject...? 01/05 15:39
→ bbbbbird: XDDD原來這麼簡單,我好笨喔,謝謝 01/05 15:39
→ bbbbbird: 難怪沒人問! 01/05 15:40
推 darktt: 說NSObject的物件或是id物件都可以,id物件是抽象的物件 01/05 16:14
→ bbbbbird: 感謝各位大大的解說>< 01/05 16:30
→ uranusjr: @darktt 其實不一樣, id 不見得繼承自 NSObject 01/05 17:52
→ uranusjr: 並沒有規定 Objective-C class 一定要繼承 NSObject (只 01/05 17:52
→ uranusjr: 是慣例), 這點和 Java 不一樣 01/05 17:53
→ darktt: 我是有試過Root class,不過init的過程要自己完成就作罷 01/05 22:13
→ darktt: 所以一直無法驗證Root Class是否可以使用id做替代 01/05 22:14
→ appleway: id 是 typedef struct objc_object *id; 01/06 00:35
→ uranusjr: 我試過了, 只要有實作 retain 就可以被加入 01/06 00:36
→ appleway: 例如NSProxy 跟block 就不是繼承NSObject, 01/06 00:36
→ uranusjr: 被移出需要實作 release, 其他一些功能需要其他 methods 01/06 00:37
→ appleway: 不過 他們都是Objective C object 01/06 00:37
→ uranusjr: 有空再另寫文章討論 01/06 00:37
→ howdiun: 都可以吧 01/06 09:16
→ ssccg: Java為什麼不行? 不就Object[] ? 01/06 09:34
→ uranusjr: @ssccg 你在 Object[] 裡放 int 給我看 01/06 10:50
→ uranusjr: (啊我發現這例子不好, NSArray 也不行 XD 算了) 01/06 10:51
→ darktt: int是C type所以不行,不過在swift下就沒這個限制了 01/06 11:41
→ manlike: int又不是物件, Java可以放Integer, Obj-C可以用NSNumber 01/06 11:58
推 Blueshiva: uranusjr馬上就發現啦,一直追這點幹嘛 XDD 01/06 12:25
→ uranusjr: 但我覺得 int 不是物件根本很腦殘, Objective-C 本來就 01/06 16:11
→ uranusjr: 疊床架屋就算了, Java 硬模仿 C++ 又學不像就很智障 01/06 16:12