Ios 理解目标C中强项和弱项的示例代码

Ios 理解目标C中强项和弱项的示例代码,ios,objective-c,Ios,Objective C,我使用了以下代码 - (void)viewDidLoad { [super viewDidLoad]; NSString *string=@"String"; self.strongStr=string; self.weakStr=string; self.strongStr=nil; NSLog(@"%@",self.weakStr);} 运行时,弱字符串的值应为零,但其打印“字符串”。我需要一个具有初始值的工作示例,这样我就可以知道强引用和弱

我使用了以下代码

- (void)viewDidLoad {
    [super viewDidLoad];
    NSString *string=@"String";
    self.strongStr=string;
    self.weakStr=string;
    self.strongStr=nil;
    NSLog(@"%@",self.weakStr);}

运行时,弱字符串的值应为零,但其打印“字符串”。我需要一个具有初始值的工作示例,这样我就可以知道强引用和弱引用发生了什么情况

弱引用表示您不想控制对象的生命周期。您正在弱引用的对象仅存在于其上,因为至少有一个其他对象具有对它的强引用。一旦情况不再如此,对象将被销毁,并且您的弱属性将自动设置为nil


请仔细阅读以进一步理解。

弱意味着你不拥有该对象。 “强壮”意味着你拥有那个物体

强引用表示您正在引用此属性/变量。编译器将注意,只要您(或任何其他对象)使用强引用指向指定给此属性的任何对象,该对象就不会被销毁。只有将属性设置为nil时,对象才会被销毁(除非一个或多个其他对象也具有对它的强引用)


弱引用表示您不想控制对象的生存期。您正在弱引用的对象仅存在于其上,因为至少有一个其他对象具有对它的强引用。一旦情况不再如此,对象将被销毁,并且您的弱属性将自动设置为nil

不要使用字符串常量来测试这些东西。尝试
NSMutableString
并构建字符串。这里有几个问题。首先,局部变量
string
仍然持有一个强引用,因此字符串不会被释放。此外,对象可能不会立即释放-这将是该方法之后的一段时间exits@Paulw11代码略微更新-(void)viewDidLoad{[super viewDidLoad];NSString*string=@“string”;self.strongStr=string;self.weakStr=string;string=nil;self.strongStr=nil;NSLog(@“%@”,self.weakStr);//加载视图后,通常从nib执行任何其他设置。}-(void)viewdide出现:(BOOL)动画{[super viewdide出现:YES];NSLog(@“%@”,self.weakStr);}仍然是@IdreesAshraf的相同副本,我需要一个工作示例代码。我只是个乞丐