NSURL's URLWithString returns nil if the URL passed is not valid. So, you can just check the return value to determine if the URL is valid.
UPDATE
Just using URLWithString:
will usually not be enough, you probably also want to check if the url has a scheme and a host, otherwise, urls such as al:/dsfhkgdsk
will pass the test.
So you probably want to do something like this:
NSURL *url = [NSURL URLWithString:yourUrlString];
if (url && url.scheme && url.host)
{
//the url looks ok, do something with it
NSLog(@"%@ is a valid URL", yourUrlString);
}
If you only want to accept http URLs you may want to add [url.scheme isEqualToString:@"http"]
.