Automatic Reference Counting (ARC)


http://developer.apple.com/library/ios/#releasenotes/ObjectiveC/RN-TransitioningToARC/_index.html#//apple_ref/doc/uid/TP40011226

http://clang.llvm.org/docs/AutomaticReferenceCounting.html#meta

http://longweekendmobile.com/2011/09/07/objc-automatic-reference-counting-in-xcode-explained/

类型转换:http://blog.csdn.net/h48582291/article/details/6779202

// The following declaration is a synonym for: @property(retain) MyClass *myObject;
// 会自动释放
@property(strong) MyClass *myObject;


// The following declaration is similar to "@property(assign) MyClass *myObject;"
// except that if the MyClass instance is deallocated,
// the property value is set to nil instead of remaining as a dangling pointer.
// 自动指向nil,比assign先进
@property(weak) MyClass *myObject;


// --定义局部变量
__strong                     is the default. 
__weak
__unsafe_unretained
__autoreleasing


    NSString __weak *string = [[NSString alloc] initWithFormat:@"First Name"];
    NSLog(@"string: %@", string);//  string: (null),因为没人接收


__bridge,__bridge_retain,__bridge_transfer
__bridge,ARC没有进行retain操作
__bridge_retain,ARC进行retain操作
__bridge_transfer,ARC在操作结束后,进行release操作

id my_id;
CFStringRef my_cfref;

NSString *a = (__bridge NSString*)my_cfref;
CFStringRef b = (__bridge CFStringRef)my_id;



http://www.cnblogs.com/v2m_/archive/2011/11/30/2269408.html
1.不可以使用retain,retainCount,release,autorelease 用@select()这样的调用也不行.属性命名不能以new开头。

2.若重写一个类子类的dealloc,不应调用[super dealloc],当然也不用写什么release释放一些什么对象,只是处理一些你觉得必要处理的事情吧,比如中止一个还没有完成的网络请求.

3.不能使用NSAllocateObject和NSDeallocateObject

4.你不能在c结构中使用对象,更好的方式是使用Objective-c类来代替.

5.在id和void*之间不能隐士转换,必须指明相应转换的生命周期。

6.不能使用NSAutoreleasePool对象,ARC使用@autoreleasepool{}块代替。

7.不能使用内存块,NSZone已经不需要使用了,现在运行时已经忽略之。


不使用ARC
设置路径:Build Phases,双击文件,加入 -fno-objc-arc
标识该文件不使用ARC机制

你可能感兴趣的:(reference)