Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 滚动时UITableView崩溃_Iphone_Objective C_Uitableview_Sdk_Ipod - Fatal编程技术网

Iphone 滚动时UITableView崩溃

Iphone 滚动时UITableView崩溃,iphone,objective-c,uitableview,sdk,ipod,Iphone,Objective C,Uitableview,Sdk,Ipod,我正在开发一个小的文本编辑器,我开始使用表视图模板,添加代码在上面列出应用程序文档目录的内容,一切正常,我复制了一些文件到目录,表视图显示它们,但是当我开始滚动时,它崩溃了。我认为有些东西是在不必要的时候发布的。在这里,我留下了代码和崩溃日志: RootViewController.m NSFileManager *directoryContent; - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:ani

我正在开发一个小的文本编辑器,我开始使用表视图模板,添加代码在上面列出应用程序文档目录的内容,一切正常,我复制了一些文件到目录,表视图显示它们,但是当我开始滚动时,它崩溃了。我认为有些东西是在不必要的时候发布的。在这里,我留下了代码和崩溃日志:

RootViewController.m

    NSFileManager *directoryContent;
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self listDumpFiles];
}
// Customize the number of sections in the table view.
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}


// Customize the number of rows in the table view.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [directoryContent count];
}


// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

    // Configure the cell.
    cell.text = [directoryContent objectAtIndex:indexPath.row];
    return cell;
}
- (void)listDumpFiles {
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];

    directoryContent = [[NSFileManager defaultManager] directoryContentsAtPath: documentsDirectory];

    NSLog(@"%@", documentsDirectory);
    return;
}
事故日志

2011-02-03 17:38:16.516 uNotes[15352:40b] /Users/pablo/Library/Application Support/iPhone Simulator/4.2/Applications/DF298F31-5723-4A1E-9EAA-3353C34BDCB2/Documents
2011-02-03 17:38:17.412 uNotes[15352:40b] -[NSCFString objectAtIndex:]: unrecognized selector sent to instance 0x9b243f0
2011-02-03 17:38:17.413 uNotes[15352:40b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSCFString objectAtIndex:]: unrecognized selector sent to instance 0x9b243f0'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x00da7be9 __exceptionPreprocess + 185
    1   libobjc.A.dylib                     0x00efc5c2 objc_exception_throw + 47
    2   CoreFoundation                      0x00da96fb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
    3   CoreFoundation                      0x00d19366 ___forwarding___ + 966
    4   CoreFoundation                      0x00d18f22 _CF_forwarding_prep_0 + 50
    5   uNotes                              0x0000238c -[RootViewController tableView:cellForRowAtIndexPath:] + 216
    6   UIKit                               0x003247fa -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:withIndexPath:] + 634
    7   UIKit                               0x0031a77f -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:] + 75
    8   UIKit                               0x0032f450 -[UITableView(_UITableViewPrivate) _updateVisibleCellsNow:] + 1561
    9   UIKit                               0x00327538 -[UITableView layoutSubviews] + 242
    10  QuartzCore                          0x01c65451 -[CALayer layoutSublayers] + 181
    11  QuartzCore                          0x01c6517c CALayerLayoutIfNeeded + 220
    12  QuartzCore                          0x01c5e37c _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 310
    13  QuartzCore                          0x01c5e0d0 _ZN2CA11Transaction6commitEv + 292
    14  QuartzCore                          0x01c8e7d5 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 99
    15  CoreFoundation                      0x00d88fbb __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 27
    16  CoreFoundation                      0x00d1e0e7 __CFRunLoopDoObservers + 295
    17  CoreFoundation                      0x00ce6bd7 __CFRunLoopRun + 1575
    18  CoreFoundation                      0x00ce6240 CFRunLoopRunSpecific + 208
    19  CoreFoundation                      0x00ce6161 CFRunLoopRunInMode + 97
    20  GraphicsServices                    0x016dc268 GSEventRunModal + 217
    21  GraphicsServices                    0x016dc32d GSEventRun + 115
    22  UIKit                               0x002bf42e UIApplicationMain + 1160
    23  uNotes                              0x00001fc0 main + 102
    24  uNotes                              0x00001f51 start + 53
)
terminate called after throwing an instance of 'NSException'
Program received signal:  “SIGABRT”.
(gdb) 

根据堆栈跟踪,您试图对字符串调用objectAtIndex:。可能是内存管理问题。获取有关正在调用它的对象的更多信息

更新

可能是这条线

directoryContent=[[NSFileManager defaultManager]目录内容路径:documentsDirectory]


我认为directoryContentsAtPath:返回一个自动释放的对象。如果您将directoryContent设置为@PropertyOnAtomic,请在标题中保留,您可以使用self.directoryContent=[[NSFileManager defaultManager]DirectoryContentsPath:documentsDirectory]进行设置;它将自动保留NSFileManager返回的对象,否则您可以调用directoryContent=[[[NSFileManager defaultManager]directoryContentsAtPath:documentsDirectory]retain];但是,当您不再需要该对象时,请务必释放它。

根据您试图在字符串上调用objectAtIndex:的堆栈跟踪。可能是内存管理问题。获取有关正在调用它的对象的更多信息

更新

可能是这条线

directoryContent=[[NSFileManager defaultManager]目录内容路径:documentsDirectory]


我认为directoryContentsAtPath:返回一个自动释放的对象。如果您将directoryContent设置为@PropertyOnAtomic,请在标题中保留,您可以使用self.directoryContent=[[NSFileManager defaultManager]DirectoryContentsPath:documentsDirectory]进行设置;它将自动保留NSFileManager返回的对象,否则您可以调用directoryContent=[[[NSFileManager defaultManager]directoryContentsAtPath:documentsDirectory]retain];但是,当你不再需要它时,一定要释放它。

我明白了,我认为是有东西释放了它,它是需要的:'2011-02-03 17:54:51.102 uNotes[15418:40b]/Users/pablo/Library/Application Support/iPhone Simulator/4.2/Applications/DF298F31-5723-4A1E-9EAA-3353C34BDCB2/Documents 2011-02-03 17:54:56.785 uNotes[15418:40b]**-[\u NSArrayM objectAtIndex:]:消息发送到取消分配的实例0x921fc60 gdb'哇!成功了,兄弟!非常感谢!:有办法在这里投票吗?很高兴听到!您可以单击我答案旁边的复选标记将其标记为答案。我认为您还不能对答案进行投票,我认为您需要10或15分。我明白了,我认为这是发布的内容,需要:'2011-02-03 17:54:51.102 uNotes[15418:40b]/Users/pablo/Library/Application Support/iPhone Simulator/4.2/Applications/DF298F31-5723-4A1E-9EAA-3353C34BDCB2/Documents 2011-02-03 17:54:56.785 uNotes[15418:40b]***-[\uu NSArrayM objectAtIndex:]:消息发送到取消分配的实例0x921fc60 gdb'哇!成功了,兄弟!非常感谢!:在这里可以投票吗?很高兴听到!您可以单击我的答案旁边的复选标记将其标记为答案。我认为您还不能对答案进行投票,我认为您需要10或15分。