我有一个全局的NSString变量,我在我的ViewController.m文件中声明了任何方法以外的内容,但不是在我的.h文件中。Objective-C:有关NSString和范围的问题
NSString *menuString;
它初始化内部webViewDidFinishLoad
,当我做到这一点
NSString *menu = [self getParameter:url :@"Menu"];
menuString = [menu copy];
而不是当我这样做
NSString *menu = [self getParameter:url :@"Menu"];
menuString = menu;
或
menuString = [self getParameter:url :@"Menu"];
这里,它的工作原理“它有效”我的意思是val ue被保存,我可以用其他方法使用它。否则,在调试期间,它表示menuString超出了范围。我想知道为什么它的行为有所不同,具体取决于初始化。
(getParameter只是一个接受两个字符串并返回字符串的方法)。
谢谢!
是否所有方法返回对象autoreleased? – dee
基本上任何没有命名为'alloc'或'copy'的方法(或那些像'allocWithZone'或'mutableCopy'这样的变体)都会返回一个自动释放对象。请参阅本指南获取更多信息:http://developer.apple.com/library/ios/#DOCUMENTATION/General/Conceptual/DevPedia-CocoaCore/MemoryManagement.html – filipe
好的。谢谢!! – dee