2011-04-18 118 views
0

我有一個管理對象,有幾個NSString的:管理對象崩潰EXC_BAD_ACCESS

@interface Establishment : NSManagedObject 
{ 
} 
@property (nonatomic, retain) NSString * name; 
@property (nonatomic, retain) NSString * subtitle; 
@property (nonatomic, retain) NSString * description; 

我創建了管理對象的實例和分配的字符串標籤,因爲這樣的:

if ([establishmentData.name length]!= 0) { 
     estabName.text = establishmentData.name; 
    } else { 
     estabName.hidden = YES; 
    } 
    if ([establishmentData.subtitle length]!= 0) { 
     estabTitle.text = establishmentData.subtitle; 
    } else { 
     estabTitle.hidden = YES; 
    } 

    if ([establishmentData.description length]!= 0) { 
     estabDescription.text = establishmentData.description; 
    } else { 
     estabDescription.hidden = YES; 
    } 

在這種情況下,名稱有一個值,但字幕和說明是零。當它到達字幕時,它成功地失敗了if和隱藏文本字段,但是當它描述它時會崩潰EXC_BAD_ACCESS。我試圖簡單地NSLogging establishmentData.description和它仍然崩潰

回溯拋出62000線的這樣的:

62851 0x00d3dbbf在_PF_Handler_Public_GetProperty()

62852 0x00d3f2fb在 - )[NSManagedObject _descriptionValues](

62853 0x00d3d6b5在 - [NSManagedObject描述]()

和與

62854 0x00004b90在結束 - [數據表的tableView:didSelectRowAtIndexPath方法:]

(個體= 0x4d48df0,_cmd = 0x6d59e3, 的tableView = 0x505d200, indexPath = 0x6111b00)在 /用戶/ Com_23 /文件/項目/ Est_list /班/數據表。米:330

62855在0x0032e794 - [UITableView的_selectRowAtIndexPath:動畫:的scrollPosition:notifyDelegate:]

()

62856 0x00324d50在 - [UITableView的_userSelectRowAtPendingSelectionIndexPath:]

()

62857 0x000377f6 in __NSFireDelayedPerform()

62858 0x00f67fe3 in CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION

()

62859 0x00f69594在__CFRunLoopDoTimer()

62860 0x00ec5cc9在__CFRunLoopRun()

62861在CFRunLoopRunSpecific()

62862在CFRunLoopRunInMode 0x00ec5161(0x00ec5240)

62863 0x018bb2 68 GSEventRunModal()

62864在

0x018bb32d在GSEventRun()

62865 0x002c742e在UIApplicationMain()

62866在主(的argc = 1,的argv = 0xbfffefe4)0x00002958

/用戶/ Com_23/Documents/projects/Est_list/main.m:14

DataTable是我的UITableViewController。有誰知道發生了什麼事?一切看起來都很好。

+0

參見:HTTP: //www.cocoadev.com/index.pl?NSZombieEnabled啓用NSZombies。 – magma 2011-04-18 05:35:09

回答

5

你不能給一個屬性名稱「描述」。參見:

Accessing a property in NSManagedObject causes memory spike and crash

參考(蘋果文檔):

http://developer.apple.com/library/ios/#DOCUMENTATION/Cocoa/Reference/CoreDataFramework/Classes/NSPropertyDescription_Class/NSPropertyDescription.html

甲屬性描述了由核心 數據框架管理對象內的單個值 。有不同 類型的屬性,每一個由 它封裝的子類表示的 特定屬性行爲看到 NSAttributeDescription, NSRelationshipDescription,和 NSFetchedPropertyDescription。

請注意,屬性名不能是 與任何非參數方法相同 NSObject或NSManagedObject的名稱。 例如,您不能給 屬性名稱「description」。有 是NSObject 上的數百種方法,這些方法可能會與名稱 名稱發生衝突,而且此列表可以在沒有來自框架或其他 庫的 警告的情況下增長。你應該避免非常 一般的話(如「字體」,並 ‘色’)和單詞或短語,並且 重疊可可範式(如 ‘isEditing’和‘objectSpecifier’)

+0

是的,改變了它。不能相信我以前沒有找到。謝謝! – Beaker 2011-04-18 05:44:52

+1

我有一個名爲newThumbnail的ManagedObject屬性,在我的應用程序中的不同時刻訪問該屬性時出現訪問崩潰的情況,這將成爲導致Cocoa範例問題的保留字「新」。謝謝@magma – Des 2014-09-10 20:31:10