What syntax do I need so the XCode compiler accepts both id and id* types without giving me warnings? Although the compiler warnings don't turn into exceptions that stop my program in it's tracks or change my program logic, I heard it's good practice to remove all warnings and want to remove the warnings. Code: -method:(id) -method:(id*) I tried both versions by passing them both id and id* and my program worked fine, but how do I remove warnings with better syntax? Since I'm on the topic of removing warnings, I can't seem to get rid of these kinds of warnings either. I've only declared -(NSString *)set once: Code: [[sets objectAtIndex:i] omega:[[[sets objectAtIndex:i] set] length]-1]; warning: multiple declarations for method `set' I never did declare -(int)length, so I don't know why it doesn't know what the heck is going on, since -(int)length is an NSString method. Code: [self possible:[self possible] * [[[sets objectAtIndex:i] set] length]]; warning: multiple declarations for method `length'