0

我在下面有一个自定义类:

#import <Foundation/Foundation.h>

@interface NamesFix : NSObject

@property (nonatomic, copy) NSString *fixedName;

- (NSString *)fixName:(NSString *)name;

@end

实现文件:

#import "NamesFix.h"

@implementation NamesFix

@synthesize fixedName;

- (NSString *)fixName:(NSString *)name
{
    if ([name isEqualToString:@"Foo"])
    {
        self.fixedName = @"Bar";
    }
    else
    {
        self.fixedName = @"";
    }
    return self.fixedName;
}

当我通过以下方式访问我的自定义类时:

NamesFix *namesFix = [NamesFix alloc] init];
NSString *someString = @"Foo";

[namesFix fixName:someString];

NSLog(@"fixedName: %@", namesFix.fixedName];

固定名称返回null。我哪里弄错了?

4

1 回答 1

3

制作您的属性副本,这是字符串的推荐内存管理属性(您可以改用保留,但副本可以保护您免受其他人传入可变子类 NSMutableString 并在您不注意的情况下对其进行更改):

@property (nonatomic, copy) NSString *fixedName;

并在您的实现中,使用此属性提供的 setter 方法:

self.fixedName = ...

代替

fixedName = ...

编辑

并且return self.fixedString习惯性地使用。

于 2013-01-19T10:32:29.090 回答