以下均在xCode 4.5、llvm 4.1的测试环境中
1.
至于说肯定是weak的,经过使用测试,使用开启arc时,不存在内存剩余且未释放的问题。
圆弧闭合时,如果修改,则无需处理。 如果是,则一定是退出时的对象。 如果只是简单的放在变量定义中而不用@修饰,也是必须的。
2.免费电话
,,用来转换成id类型,这个id类型的周期是由arc控制的,不用管。
,用于将id转换为类型,用完之后就需要这个。
只完成转换,不涉及内存保留或其他任何事情。
3.区块
创建块时,会在堆栈上分配内存。 如果在作用域外调用,就会发生错误,程序会崩溃。 解决办法是创建后调用copy方法,将其移动到堆中。
对于内部对象,该块会执行一次,但存储类型修饰符标记的对象变量不会被执行。所以为了避免循环,如果A类中的块B需要调用A,那么应该使用它像这样
A* a = 自身;
B = ^(){a....}
或者
id = 自我;
块 = ^() {
id = ;
如果(!=零)
// 做一些事情
};
5.
“属性变量也必须定义或弱”
这种说法是错误的。 通过()可以编译出如下定义
@ (, ) *姓名;
6.
这里说
@当ARC打开和关闭时,
在* ;
在函数内部
[自我测试];
NSLog(@": %@",);// 打开arc时他这里说的是nil
-(无效)测试{
@{
*= [[ alloc] :@"名字: %@", @"tom"];
NSLog(@": %@",);
=;
给不同类型的对象赋值是不同的。
经过测试,它们是相同的,可以正确赋值。
用于修改声明为 (id *) 的函数的参数
7、判断项目是否支持arc
#如果()
// 在这里做你的 ARC 事情
#万一
或者,如果您仍然想支持旧的 GCC:
#如果 () && ()
// 在这里做你的 ARC 事情
#万一