• Objuct-c 对象的初始化 存起器 属性 self和super 内存管理


     对象初始化:

    -(id)init;万能类型,能返回各种对象,可能会导致类型错误。

    -(instancetype)init;当前类的类型(推荐大家选)

     if的判断语句中self是等于[super init]而不是判断,初始化失败的话就返回空 ,这时返回0给self自己,自己就变成空对象。

    指定初始化方法

     一般是参数最多的一种初始化方法:

    其他初始化都直接间接调用指定初始化,出现错误以后可以直接从指定初始化中找出错误。

    一个类需要一个指定初始化方法。

    存取器方法:

    get的方法和实例变量同名。

    set是设置的方法,方法名命的格式set实例变量名。

    有了存取器的方法,可以使用点语法,两种方法等价。

    [实例变量名 name] 或者 实例变量名. name。

    点语法是为了减少程序员编写的时间,本质不变。

    设置了了set方法以后,也可以用点语法。

    只有get和set方法能点语法。其他语法只能用[]

    属性声明

    点H文件中

    @poroperty(nonatomic,retain)NSString* name...

    点M文件中synthesize name....

    在synthesize age_oldage,这样就可以在main文件中直接用oldage = 10;但是self.age只能这么用,两者等同于[self setoldage:10];

    @poroperty()括号中的词

    线程相关的

    1、原子性 atomic (默认)(一般使用这个)

    2、非原子性 nonatomic

    读/写

    1、readonly只产生getter方法,不生成setter的方法

    2、readwirte (默认)都会产生读取和设置的方法

    在获取和设置方法中,可以用getter和setter设置得到和设置的设置名:

    @property(nonatomic,getter = getNo,setter = setNo:)NSString* sid

    [zhang setNo:@"111"]

    得到他的值的

    zhang.getNo

     4.6版本以后

    可以不声明实例变量,只声明属性,声明属性后会自动声明实例变量

    seif和super

    把具体实例方法绑定到对象的是self

    内存管理规则

  • 相关阅读:
    SQL group by的困惑
    【翻译】优化基于ExtJS 4.1的应用
    DAO模式图解
    Add new rows to WebCombo in clientside javascript
    JavaScript页面刷新与弹出窗口问题解决方法
    Web开发:"父窗口"与"弹出子窗口"之间的刷新, 传值(转载)
    用"window.showModalDialog()"实现DIV模式弹出窗口
    [转]Infragistics NetAdvantage UltraWebGrid使用技巧
    JavaScript 和 .NET 中的 JavaScript Object Notation (JSON) 简介
    json2.js 使用详细教程
  • 原文地址:https://www.cnblogs.com/naizui/p/5034205.html
Copyright © 2020-2023  润新知