Something like this?

https://gist.github.com/13be5b600700f7a06841

On Wednesday, August 1, 2012 10:08:39 PM UTC-7, Peter Hosey wrote:
>
> On Wednesday, August 1, 2012 6:06:37 PM UTC-7, x86tech wrote:
>>
>> Same here. I got so many warnings and errors while building this on ML 
>> using Xcode 4.4 but I finally built it successfully after some debugging. I 
>> don't get the same error in Growl.app, you may want to re-clone or update 
>> again to 1.4 tag. For MailMe, I just edited:
>>
>> NSString *userAtHostPort = [NSString stringWithFormat:
>>
>> (port != nil) ? @"%@@%@:%@" : @"%@@%@", <-this part, I'm not an expert 
>> so I can't tell what should be done but from what I can tell the format 
>> string must match the number of arguments below?
>>
>> username, hostname, port];  <- Data argument not used by format string
>>
>> For other errors I got such as Format String Errors, I just changed them 
>> to what was suggested.
>>
>
> That line is a bit of cleverness that creates a string like the following:
>
>
>  [email protected]:4000 (if a port is specified)
>
> [email protected] (if no port)
>
>
> The middle expression chooses between two format strings (@"…"). The first 
> one requires three arguments (each represented by “%@”); the second 
> requires two.
>
>
> It's not, strictly speaking, an error to pass more arguments than the 
> format string requires, but it can be caused by changing either the format 
> string or the argument list (in this line, that's “username, hostname, 
> port”) and forgetting to change the other.
>
>
> The cleverness here is in *deliberately* passing more arguments than the 
> second format string requires, since the first format string will use all 
> three and the second format will simply ignore the extra argument.
>
>
> The code is correct, but the compiler is not wrong, and ignoring warnings 
> is a good way to create problems later—if somebody makes the aforementioned 
> change-one-but-not-the-other mistake in a later change, the warning will 
> not suddenly appear because it was already there, so the person making the 
> change may not discover their mistake.
>
>
> The correct change to satisfy the compiler and make that code more robust 
> against future changes would be to have an if statement that selects 
> between two assignments, each with a different stringWithFormat: message on 
> the right side. 
>

-- 
You received this message because you are subscribed to the Google Groups 
"Growl Discuss" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/growldiscuss/-/mrCmyiDrfLsJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/growldiscuss?hl=en.

Reply via email to