То, что у тебя есть, прекрасно работает:
#import <Foundation/Foundation.h>
@interface Test : NSObject
- (NSString *)giveMeAStringGoddammit;
@end
@implementation Test
- (NSString *)giveMeAStringGoddammit
{
NSString *s;
// switch statement to choose which string to assign to s, so essentially:
s = @"a string";
return s;
}
@end
int main (int argc, const char * argv[])
{
@autoreleasepool {
Test *t = [[Test alloc] init];
NSLog(@"t says: %@", [t giveMeAStringGoddammit]);
}
return 0;
}
Вывод этой программы:
t says: a string
Чтобы сделать это немного более реалистичным, давайте изменим его на использование свойства:
#import <Foundation/Foundation.h>
@interface Test : NSObject
@property(copy, nonatomic) NSString *string;
- (NSString *)giveMeAStringGoddammit;
@end
@implementation Test
@synthesize string;
- (NSString *)giveMeAStringGoddammit
{
NSString *s;
// switch statement to choose which string to assign to s, so essentially:
s = self.string;
return s;
}
@end
int main (int argc, const char * argv[])
{
@autoreleasepool {
Test *t = [[Test alloc] init];
t.string = @"Hello world!";
NSLog(@"t says: %@", [t giveMeAStringGoddammit]);
}
return 0;
}
Это делает то, что вы ожидаете:
t says: Hello world!