ARC
    自动引用计数
ARC不是垃圾回收,而是编译器自动插入代码来减少程序员的代码输入和失误。
    同时比垃圾和效率要高,因为其不影响运行时间,相当于自己管理内存。
   
总是通过属性来管理实例变量(init/dealloc除外),在dealloc中释放所有属性。 dealloc中会自动加入释放实例变量的代码,因此不必要手段增加释放实例变量的代码。不需要手动调用[super  dealloc]  
不要调用retain,release,autorelease,编译器会自动插入相关代码。 注意命名方式,不要以copyXXX方式命名不想进行retain的方法,编译器会根据方法名自动retain。  
C语言结构体中不要有对象指针    
id和void*只能通过桥接转换来进行转换    
不要使用NSAutoreleasePool,而是使用@autoreleasepool{}代码块。 转换ARC代码:Edit->Refactor->Convert  to Objective-C ARC  
strong 相当于retain。
    Strong在ARC环境为默认属性类型。
@property  (nonatomic,readwrite,strong)NSString *title;
    @property (strong, nonatomic) UIViewController *viewController;
    @property (nonatomic,  strong) id  childObject;
Default
weak 取代之前的assign,对象销毁之后会自动置为nil,防止野指针。
    Assign不能自动置为nil,需要手动置为nil。
     Delegate基本总是使用weak,以防止循环引用。特殊情况是,希望在dealloc中调用delegate的某些方法进行释放,此时如果使用weak将引起异常,因为此时已经是nil了,那么采用assign更为合适。
@property  (weak, nonatomic) IBOutlet UIButton *myButton;//处于最顶层的IBOutlet应该为strong
    @property (nonatomic,  weak) id  parentObject;
    @property(nonatomic,readwrite,weak) id  <MyDelegate> delegate;
    @property (nonatomic,  weak) NSObject  <SomeDelegate> *delegate;
 
assign 对基础数据类型(NSInteger,CGFloat)和C数据类型(int,  float, double, char等) ’@property  (nonatomic, assign) int n;
    @property (nonatomic, assign) BOOL isOK;
    @property (nonatomic,  assign)  CGFloat scalarFloat;
    @property (nonatomic,  assign)  CGPoint scalarStruct;
Default
retain NSObject及其子类。
    Release旧值,retain新值。
    Retain是指针复制(浅复制),引用计数加1,而不会导致内容被复制。
@property  (nonatomic, retain)UIColor *myColor;  
atomic   Default
nonatomic 非原子性访问,对属性赋值的时候不加锁,多线程并发访问会提高性能    
unsafe_unretained      
copy 复制内容(深复制),如果调用copy的是数组,则为指针复制(浅复制),仅仅复制子元素的指针。 @property  (nonatomic,copy)NSString  *title;
    @property (nonatomic, copy) NSMutableArray *myArray;//not recommended
    @property (nonatomic, copy) SomeBlockType someBlock;
 
readonly      
readwrite     Default
retain cycle
    循环保留
delegate和block是产生retain  cycle的主要原因    
dealloc 移除观察者observers
    注销通知notification
    设置非weak的delegate为nil
    取消timer
   
                                                                                                                                                 

[Objective-c 基础 - 3.3] @property属性详解的更多相关文章

  1. JavaScript对象的property属性详解

    JavaScript对象的property属性详解:https://www.jb51.net/article/48594.htm JS原型与原型链终极详解_proto_.prototype及const ...

  2. Vue.js 源码分析(十三) 基础篇 组件 props属性详解

    父组件通过props属性向子组件传递数据,定义组件的时候可以定义一个props属性,值可以是一个字符串数组或一个对象. 例如: <!DOCTYPE html> <html lang= ...

  3. Vue.js 源码分析(五) 基础篇 方法 methods属性详解

    methods中定义了Vue实例的方法,官网是这样介绍的: 例如:: <!DOCTYPE html> <html lang="en"> <head&g ...

  4. Vue.js 源码分析(十一) 基础篇 过滤器 filters属性详解

    Vue.js 允许你自定义过滤器,可被用于一些常见的文本格式化.过滤器可以用在两个地方:双花括号插值和 v-bind 表达式 (后者从 2.1.0+ 开始支持).过滤器应该被添加在 JavaScrip ...

  5. Android笔记-2-TextView的属性详解

    [Android 基础]TextView的属性详解 android:autoLink :设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接.可选值(none/web / ...

  6. Android零基础入门第80节:Intent 属性详解(下)

    上一期学习了Intent的前三个属性,本期接着学习其余四个属性,以及Android系统常用内置组件的启动. 四.Data和Type属性 Data属性通常用于向Action属性提供操作的数据.Data属 ...

  7. WPF依赖属性详解

    WPF依赖属性详解 WPF 依赖属性 英文译为 Dependency Properties,是WPF引入的一种新类型的属性,在WPF中有着极为广泛的应用,在WPF中对于WPF Dependency P ...

  8. Linux文件权限与属性详解 之 chattr & lsattr

    Linux文件权限与属性详解 之 一般权限 Linux文件权限与属性详解 之 ACL Linux文件权限与属性详解 之 SUID.SGID & SBIT Linux文件权限与属性详解 之 ch ...

  9. HTML中元素的position属性详解

    HTML中元素的position属性详解 转载自:https://blog.csdn.net/wangzunkuan/article/details/81540935   HTML中DOM元素有5种定 ...

随机推荐

  1. 李洪强iOS开发本人集成环信的经验总结_07_监听好友请求

    李洪强iOS开发本人集成环信的经验总结_07_监听好友请求 来到Appdalegate中: 遵守代理协议 设置代理  实现监听好友请求的回调的方法

  2. 【mysql的设计与优化专题(1)】ER图,数据建模与数据字典

    需求分析是做项目中的极为重要的一环,而作为整个项目中的'血液'--数据,更是重中之重.viso,workbench,phpmyadmin等软件可以帮我们更好的处理数据分析问题. ER图 E-R方法是& ...

  3. Adobe Acrobat XI Pro安装破解

    注册机使用说明: Install Instructions: (Read carefully!) 安装说明(仔细阅读!) 1. Disable your Network card or pull th ...

  4. forks rate异常

    一.收到nagios Current_load报警短信

  5. 中断服务程序不用interrupt关键字也可实现中断,该关键字是否必须?

    2013-06-20 11:13:35 中断服务程序不用interrupt关键字也可实现中断,该关键字是否必须? 使用tools->pin connect,将INT5与pin.txt关联,模拟外 ...

  6. NFC(8)关于新买的标签的格式化

    有多种方法格式化nfc标签设备. 如搜相关的手机上应用,在应用里选择格式类型 本文是用代码手动格式 public void writeNFCTag(Tag tag) { if (tag == null ...

  7. cisco vpn client for win10 x64 setup package

    win10 x64安装cisco vpn client报错,解决方法如下: 1.卸载以前安装的所有cisco vpn client,并重启电脑. 2.运行winfix.exe 3.安装Global V ...

  8. UVa 400 (水题) Unix ls

    题意: 有n个文件名,排序后按列优先左对齐输出.设最长的文件名的长度为M,则最后一列长度为M,其他列长度为M+2. 分析: 这道题很简单,但要把代码写的精炼,还是要好好考虑一下的.lrj的代码中有两个 ...

  9. Java [leetcode 30]Substring with Concatenation of All Words

    题目描述: You are given a string, s, and a list of words, words, that are all of the same length. Find a ...

  10. 关于Memcache mutex设计模式的.net实现

    之前在网上看过memcache-mutex的场景分析和实现代码,这里将.net方式加以实现,当然这里主要是依据原文的伪代码照猫画虎,以此做为总结及记录.如果您对相应实现感兴趣可以尝试使用本文提供的代码 ...