我有一個不錯的對象,描述了一個比較大的數據集。我決定在對象中實現一些輔助功能。顯然,我不知道如何寫一個setter
基本上,而是採用了標準制定者的NSString的,我定義自己的二傳手,並在同一時間設置的另一個對象。
例如:
-(void) setNumber:(NSString *)number_in
{
number = [number_in copy];
title = @"Invoice ";
title = [title stringByAppendingString:number];
}
我知道我會需要「稱號」作爲特定格式的屬性。標題是基於數字,所以我創建了一個setter來在一個打卡中設置數字和標題。 (標題有默認的合成二傳手......我不別處定義它)
出於某種原因,我越來越發送到釋放實例錯誤的消息。如果我刪除這個setter,代碼工作正常。
我的屬性定義是在這裏:
@property (nonatomic, copy) NSString *number;
@property (nonatomic, copy) NSString *title;
我試圖保持,無濟於事。我設置的malloc堆日誌和記錄此:
Alloc: Block address: 0x06054520 length: 32
Stack - pthread: 0xa003f540 number of frames: 30
0: 0x903ba1dc in malloc_zone_malloc
1: 0x102b80d in _CFRuntimeCreateInstance
2: 0x102d745 in __CFStringCreateImmutableFunnel3
3: 0x10824dd in _CFStringCreateWithBytesNoCopy
4: 0xae222e in -[NSPlaceholderString initWithCStringNoCopy:length:freeWhenDone:]
5: 0xaf9e8e in _NSNewStringByAppendingStrings
6: 0xaf9a76 in -[NSString stringByAppendingString:]
7: 0x112ba in -[Invoice setNumber:] at Invoice.m:25
8: 0x11901 in -[Invoice copyWithZone:] at Invoice.m:47
9: 0x107c7ca in -[NSObject(NSObject) copy]
10: 0x1117632 in -[NSArray initWithArray:range:copyItems:]
11: 0x107f833 in -[NSArray initWithArray:copyItems:]
12: 0x5595 in -[InvoicesTableViewController wrapper:didRetrieveData:] at InvoicesTableViewController.m:96
13: 0x4037 in -[Wrapper connectionDidFinishLoading:] at Wrapper.m:288
14: 0xb17172 in -[NSURLConnection(NSURLConnectionReallyInternal) sendDidFinishLoading]
15: 0xb170cb in _NSURLConnectionDidFinishLoading
16: 0x18ca606 in _ZN19URLConnectionClient23_clientDidFinishLoadingEPNS_26ClientConnectionEventQueueE
17: 0x1995821 in _ZN19URLConnectionClient26ClientConnectionEventQueue33processAllEventsAndConsumePayloadEP20XConnectionEventInfoI12XClientEvent18XClientEventParamsEl
18: 0x18c0e3c in _ZN19URLConnectionClient13processEventsEv
19: 0x18c0cb7 in _ZN17MultiplexerSource7performEv
20: 0x10fd01f in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
21: 0x105b28b in __CFRunLoopDoSources0
22: 0x105a786 in __CFRunLoopRun
23: 0x105a240 in CFRunLoopRunSpecific
24: 0x105a161 in CFRunLoopRunInMode
25: 0x1c29268 in GSEventRunModal
26: 0x1c2932d in GSEventRun
27: 0x39542e in UIApplicationMain
28: 0x2199 in main at main.m:14
29: 0x2115 in start
最後,我不斷收到此錯誤:
-[CFString release]: message sent to deallocated instance 0x4b5aee0
感謝提前:)
我想我愛你。 (將在6分鐘內接受) – clifgriffin
這是更好的:) – fabian789
或者你可以寫[title title release]和'title = [[NSString stringWithFormat:@「Invoice%@」,number] retain]'以防你想要title屬性是隻讀的,因爲我認爲它應該是。 – tia