财产申报中的含义atomic和nonatomic含义是什么?
@property(nonatomic, retain) UITextField *userName;
@property(atomic, retain) UITextField *userName;
@property(retain) UITextField *userName;
Run Code Online (Sandbox Code Playgroud)
这三者之间的运作区别是什么?
我是iOS5开发新手并使用objective-c.我无法理解强存储和弱存储之间的区别.我已经阅读了文档和其他SO问题,但它们听起来与我完全相同,没有进一步的见解.
我阅读了文档:Transitioning To ARC - 它引用了iOS4的retain,assign和release条件; 这让我很困惑.然后我看看Open U CS193p,它区分强弱:
强者:"把它保持在堆中,直到我不再指向它为止"
弱:"只要别人强烈地指出它就保持这种状态"
是不是两个定义相同=如果指针不再指向一个对象,那么释放持有该对象的内存?我理解指针,堆,分配或释放内存的概念 - 但强弱之间有什么区别?
我是Objective C的新手.我有C的基本知识,包括指针的概念.我有两个基本问题:
我在线阅读了很多材料,这些材料都解释了人们何时应该使用" copy"代替" strong".
"复制属性是强大的替代品.它不是取得现有对象的所有权,而是创建您分配给属性的任何内容的副本,然后取得对该属性的所有权.只有符合NSCopying协议的对象才能使用此属性. ".
并且有很多示例代码显示使用"复制"时,原始值保持不变.
但是,我是新手Objective-C.我真的想知道如何使用新分配的值.带有"新值"的"新实例(副本)"在哪里?如果需要,是否需要任何其他方法来更改原始值?
如果有人可以分享这个部分的一个例子而不是一个证明原始值没有改变的例子,那将是很好的.
在Objective-C中声明属性时,可配置的自定义选项有哪些,它们定义了访问器方法的行为方式?
例如,你可以拥有弱,强,只读.
当我在iOS中为应用程序创建属性时,何时应该使用"assign"?我什么时候应该使用"保留"?
一个人比另一个人有什么好处吗?
我搜索了许多链接并阅读了很多文章,但我找不到确切的区别retain和assign..
我正在尝试以下方法:
NSMutableArray *arr1 = [[NSMutableArray alloc] initWithObjects:@"1",@"2",@"3", nil];
NSMutableArray *arr2=[arr1 retain];
NSMutableArray *arr3 = arr1; //Assign
[arr1 addObject:@"66"];
NSLog(@"Array one : %@",arr1);
NSLog(@"Array two : %@",arr2);
NSLog(@"Array three : %@",arr3);
Run Code Online (Sandbox Code Playgroud)
输出:
Array one : (
1,
2,
3,
66
)
Array two : (
1,
2,
3,
66
)
Array three : (
1,
2,
3,
66
)
Run Code Online (Sandbox Code Playgroud)
以上示例给出了相同的输出.
考虑到上面的例子,我如何定义assign和之间的区别retain?
如果以上示例有错,请提供更好的示例提供答案.
memory-management reference-counting objective-c ios automatic-ref-counting
objective-c ×6
ios ×5
atomic ×1
attributes ×1
copy ×1
ios5 ×1
macos ×1
nonatomic ×1
properties ×1
xcode ×1