То, что вы получили прекрасно работает:
#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!
Если у вас есть статическая строка, вам не нужно, чтобы сохранить его , поэтому есть что-то, что вы не показываете, что вызывает проблему. – ThomasW
Вам нужно показать больше кода. Либо вы возвращаете выпущенный объект, либо ваш коммутатор не является исчерпывающим, и вы фактически проходите мимо него, не присваивая ему 's' (что означает, что это значение мусора). –
aString на самом деле является переменной-членом для всего класса это, если это имеет значение. Этот вызов является первым, когда ему присваивается значение. Попробую другие предложения сейчас. –