2013-01-19 63 views
0

下面我有一個自定義類:iPhone SDK:如何返回的NSString自定義類

#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]; 

fixedName返回null。我哪裏錯了?任何幫助,將不勝感激。謝謝!

+0

通常要聲明一個'NSString'財產'copy'。 –

+0

我只是使用'copy'而不是'assign'是它嗎? – jaytrixz

+0

是的 - 這是建議的 –

回答

3

讓你的特性複製這是串推薦的存儲管理屬性 (你可以使用保留代替,但拷貝保護你從別人傳入可變 子類的NSMutableString,並把它改變,而你沒有注意到):

@property (nonatomic, copy) NSString *fixedName; 

,並在您的實現,使用setter方法,該酒店提供:

self.fixedName = ... 

而不是

fixedName = ... 

編輯

,還可以使用return self.fixedString的習慣問題。

+0

會嘗試,謝謝。 – jaytrixz

+0

謝謝,我更新了我的問題,但它仍然返回null。 – jaytrixz

+0

沒關係,我想通了,非常感謝! – jaytrixz