applicationDidFinishLaunching

applicationDidFinishLaunching

只是一个简单的问题。我有一个在我的applicationDidFinishLaunching方法中生成的NSArray,但是由于某种原因,该数组未由其他方法使用,因此它在未使用。

-(void)applicationDidFinishLaunching... {
    NSArray* songsArray = [root nodesForXPath:@".//dict/dict/dict" error:nil];

-(id)tableView:(NSTableView *)tableView objectValueForTableColumn... {
    for(NSXMLElement* song in songsArray) {


我也在头文件中声明了变量。

干杯,
史考特

最佳答案

您已将songsArray声明为局部变量,在applicationDidFinishLaunching之外不可见。

如果您已经在标头中声明了变量,则只需分配它即可:

-(void)applicationDidFinishLaunching... {
    songsArray = [root nodesForXPath:@".//dict/dict/dict" error:nil];


关于内存管理的注意事项:
如果未使用ARC,则还需要retain数组,否则它将在applicationDidFinishLaunching的末尾自动释放,并且变量将指向释放的内存,并且应用程序将崩溃。

并且不要忘记在release中再次使用dealloc(同样,如果您不在ARC范围内)。

关于objective-c - applicationDidFinishLaunching变量范围问题?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8808700/

10-09 03:48