只是一个简单的问题。我有一个在我的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/