When using the general pasteboard, you have to clear it's contents to prepare it for new items.
From the docs:
Clears the existing contents of the pasteboard, preparing it for new contents. This is the first step in providing data on the pasteboard.
Apple also provides a string constant for plain text string pasteboard contents:NSPasteboardTypeString
The following code works, and uses the general pasteboard:
NSPasteboard* pasteboard = [NSPasteboard generalPasteboard];
[pasteboard clearContents];
[pasteboard setString:@"TestString" forType:NSPasteboardTypeString];
NSLog(@"%@", [pasteboard stringForType:NSPasteboardTypeString]);