Mam funkcję, którą chcę operować na dwóch różnych niestandardowych obiektach. Moją pierwszą myślą było zaakceptowanie argumentu jako (id) i operowanie na obiekcie id. Nie mogę jednak wydawać się, jak to zrobić.Używanie (id) w Objective-C
Obie klasy (słownie jabłka i pomarańcze) mają zmienne interfejs:
NSDecimalNumber *count;
chcę zrobić coś podobnego do tego:
-(NSDecimalNumber*)addCount:(id)addObject{
return [count decimalNumberByAdding:addObject.count];
}
nie wydaje, aby dowiedzieć się składni spraw, aby to się stało. Czy jest to właściwe podejście, czy byłoby lepiej podklasę (z klasy owoców) i działać na klasie rodzica?
-(NSDecimalNumber*)addCount:(Fruit*)addFruit{
return [count decimalNumberByAdding:addFruit.count];
}
Jestem fanem silnego pisania na klawiaturze (poszedłem z # 4 FYI). Dziękuję bardzo za informację; właśnie tego szukałem! –
Jeśli naprawdę potrzebujesz silnego pisania, możesz mieć lepszy czas z językiem statycznym, takim jak C++. Szkoda, że właściwości zachowują się w ten asymetryczny sposób. Przynajmniej powinna istnieć flaga kompilatora, aby umożliwić symetryczne zachowanie kompilacji między składnią właściwości a składnią metoda-odbiornika. – ctpenrose
@ctpenrose Obj-C może być tak samo statycznie napisany jak następny język, jeśli chcesz. – kubi