3
我正在開發一個帶有最新SDK和XCode 4.2的iOs 4應用程序。我有一個關於NSString參數的問題。這是我的類定義:複製或保留NSString參數?
#import <Foundation/Foundation.h>
@interface BlogEntry : NSObject
{
NSString* title;
NSString* text;
NSDate* date;
NSString* photo;
}
- (id)initWithTitle:(NSString*)titulo text:(NSString*)texto date:(NSDate*)fecha photo:(NSString*)foto;
@end
與實現
#import "BlogEntry.h"
@implementation BlogEntry
- (id)initWithTitle:(NSString*)titulo text:(NSString*)texto date:(NSDate*)fecha photo:(NSString*)foto
{
if (self = [super init])
{
title = titulo;
text = texto;
date = fecha;
photo = foto;
}
return self;
}
@end
我可能需要保留initWithTitle
參數?或者,我可能需要複製它們嗎?
兩個問題。即使使用ARC,也需要使用複製語義發送這些屬性的副本(ARC僅自動添加保留和發佈)。另外,'NSDate'實現'NSCopying',所以它也應該發送'-copy'。 – JeremyP 2012-03-14 11:41:19
概括 - 任何實現'NSCopying'的應該是'copy'語義。然而,我使用經驗法則'如果它有一個可變的子類,複製它'。 – deanWombourne 2012-03-14 12:24:26