zoukankan      html  css  js  c++  java
  • 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

    内存管理规则

  • 相关阅读:
    Scrapy 概览笔记
    Python 依赖版本控制 (requirements.txt 文件生成和使用)
    Python 虚拟空间的使用
    macOS 所有版本 JDK 安装指南 (with Homebrew)
    鉴权那些事
    Java 位运算符和 int 类型的实现
    ASP.NET Core 入门教程 5、ASP.NET Core MVC 视图传值入门
    如何做好一次知识或技术分享
    ASP.NET Core 入门教程 4、ASP.NET Core MVC控制器入门
    ASP.NET Core 入门教程 3、ASP.NET Core MVC路由入门
  • 原文地址:https://www.cnblogs.com/naizui/p/5034205.html
Copyright © 2011-2022 走看看