iOS Developer

Objc中的ARC

2017-01-02  本文已影响25人  klory

怎样取消ARC

原文出自StackOverflow

It is possible to disable ARC for individual files by adding the -fno-objc-arc
compiler flag for those files.

You add compiler flags in Targets -> Build Phases -> Compile Sources. You have to double click on the right column of the row under Compiler Flags. You can also add it to multiple files by holding the cmd button to select the files and then pressing enter to bring up the flag edit box.


以下内容原文出自这里

When to use -dealloc() in ARC?

The only reason for keeping a dealloc() method around is when you need to free certain resources that do not fall under ARC’s umbrella. Examples of this are:

When to use @property?

weak is the recommended relationship for all outlet properties. These view objects are already part of the view controller’s view hierarchy and don’t need to be retained elsewhere. The big advantage of declaring your outlets weak is that it saves you time writing the viewDidUnload method (in non-arc).

Using properties just for the purposes of simplifying memory management is no longer necessary.
You can still do so if you want to but think it’s better to just use instance variables now, and only use properties when you need to to make data accessible to other classes from your public interface.

As a best practice, if you define something as a property, then you should always use it as a property. The only places where you should access the property’s backing instance variable directly are in init
and when you provide a custom getter and setter. Anywhere else you should access the property through self.propertyName.

Bridging casts - 和bridging相关的函数

Now that we have ARC, the compiler needs to know who is responsible for releasing such casted objects.

If you treat an NSObject as a Core Foundation object, then it is no longer ARC’s responsibility to release it. But you do need to tell ARC about your intentions, the compiler cannot infer this by itself.

Likewise, if you create a Core Foundation object but then cast it to an NSObject, you need to tell ARC to take ownership of it and delete that object when its time comes. That’s what the bridging casts are for.

Anywhere you call a Core Foundation function named Create, Copy, or Retain you must do CFBridgingRelease() to safely transfer the value to ARC.

To summarize:

上一篇下一篇

猜你喜欢

热点阅读