Это можно сделать, это называется stringification ( см. Ссылку ):
#define kUserInfoURL(USERNAME) [NSURL URLWithString:@"http://a.com/" #USERNAME]
Однако это будет работать только с жестко закодированными именами пользователей. Если вы передадите переменную, вы получите имя переменной, а не ее содержимое.
Почему бы вам не создать метод или функцию, которая будет возвращать вам то же самое?
Пример:
#define kBaseUrl @"http://a.com"
- (NSURL*)createUrlForUser:(NSString*)username {
NSString* url = [NSString stringWithFormat:@"%@/%@", kBaseUrl, username];
return [NSURL URLWithString:url];
}