在哪里初始化类中的实例变量

问题描述

| 我是Objective-c的新手,我对全局变量总是有疑问。我不知道在哪里初始化它们。我的问题是与NSString。我写了这段代码– 在.h中
NSString *session ; // i also  @property(retain,nonatomic) and synthesize ...
viewDidLoad
中,\'
session=@\"HEllo\";
和在
-(IBAction) showInformations:(id)sender;
{
    NSLog(@\" informations ok\");
    NSLog(@\"my sesison : %@  \",session);
}
但是我的演出信息崩溃了:/我认为会议是空的。请帮助     

解决方法

session = @\"hello\";
self.session = @\"hello\";
上面两个语句之间有很大的区别。第一个只是将
hello
分配给
session
。这里字符串“ 5”是自动释放的,因此当您点击按钮时,“ 6”无效,因为您没有保留“ 6”。但是在第二行使用ѭ10。当使用“ 10”时,它不仅是简单的赋值,实际上是对访问器方法的调用。在这里,您在属性声明中使用了“ 12”。因此,当使用
self
时,将调用
session
的设置器,并保留它。因此,当您点击按钮时,ѭ6是有效的。 总结是使用权属性,并使用ѭ10来避免很多内存问题。 编辑:正如fluchtpunkt所指出的,此解释不适用于字符串文字。我当时不明白字符串文字在编写时是特殊的。     ,尝试使用点语法为属性进行设置:
self.session=@“Hello”;
这将确保适当的内存管理。     ,必须在代码中的某个位置对会话进行另一个写访问。类似于
session = [NSString stringWith...];
的代码行 因此,找到代码的其他部分,您在其中分配了一些内容给
session
变量,然后用适当的内存管理替换了错误的内存管理。问题不在显示的三行之内。 根据您的代码,它应该类似于
self.session = [NSString stringWith...
或者如果您不方便
[session release];
session = [[NSString stringWith...] retain];
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...