3 回答
TA贡献1828条经验 获得超4个赞
// The following declaration is a synonym for: @property(retain) MyClass *myObject;@property(strong) MyClass *myObject;
strong
retain
strong
retain
assign
weak
TA贡献1816条经验 获得超6个赞
原子/缺省 非原子 强=保留/违约 瘦弱 保留 指定/默认 不安全未保留 复制 只读 阅读/默认
1.强(iOS 4=保留)
上面写着“把这个放在堆里直到我不再指着它” 换句话说,“我是业主,你不能在此之前取消这一目标,与保留一样好” 只有在需要保留对象时才使用Strong。 默认情况下,所有实例变量和局部变量都是强指针。 我们通常对UIViewControlers(UI项的父级)使用强 Strong与ARC一起使用,它基本上可以帮助您,不必担心对象的保留计数。当你完成它时,弧形自动释放它。使用关键字强意味着你拥有这个对象。
@property (strong, nonatomic) ViewController *viewController;@synthesize viewController;
2.弱 -
上面写着“只要别人强烈地指点,就留着这个” 与分配相同,不保留或释放 “弱”引用是指不保留的引用。 我们通常将弱用于IBOutlet(UIViewController的子程序),这是因为只要父对象存在,子对象就会存在。 弱引用是不保护引用对象免受垃圾收集器回收的引用。 弱本质上是赋值,是一种未保留的属性。除了当对象被解除分配时,弱指针将自动设置为零。
@property (weak, nonatomic) IBOutlet UIButton *myButton;@synthesize myButton;
假设我们的目标是一只狗,而狗想要逃跑(被取消分配)。
有力的指针就像一根拴在狗身上的绳子。只要你把皮带系在狗身上,狗就不会跑掉。如果五个人把他们的皮带附在一只狗身上(五个强指针指向一个物体),那么这只狗将不会逃跑,直到所有五条皮带都被分离。
另一方面,弱指针就像小孩子指着狗说:“看!一只狗!”只要狗还在皮带上,孩子们还能看见那只狗,他们还会指着它。然而,一旦所有的皮带都分开了,狗就跑掉了,不管有多少小孩指着它。
一旦最后一个强指针(Leash)不再指向一个对象,该对象将被释放,所有弱指针都将被归零。
3.保留=强
它被保留,旧值被释放并被赋值,它指定了应该发送的新值。 保留赋值和发送的旧值-释放 保留和坚强是一样的。 苹果说,如果你写,保留,它将自动转换/工作像强者。 像“alloc”这样的方法包括一个隐含的“保留”。
@property (nonatomic, retain) NSString *name;@synthesize name;
4.分配
赋值是默认的,只需执行变量赋值。 “赋值”是一个属性,它告诉编译器如何合成属性的setter实现 我会使用赋值来表示C基元属性,而弱引用用于对象-C对象的弱引用。
@property (nonatomic, assign) NSString *address;@synthesize address;
TA贡献1779条经验 获得超6个赞
strong
retain
weak
assign
这意味着,你可以简单地替换它们。
不过assign
weak
delegateAssign
delegateWeak
-dealloc
// Our delegate is deallocating and there is no other strong ref.- (void)dealloc { [delegateWeak doSomething]; [delegateAssign doSomething];}
weak
delegateWeak
delegateAssign
// Our delegate is deallocating and there is no other strong ref.- (void)dealloc { [delegateWeak doSomething]; // Does nothing, already nil. [delegateAssign doSomething]; // Successful call.}
weak
- 3 回答
- 0 关注
- 360 浏览
添加回答
举报