zoukankan      html  css  js  c++  java
  • Objective-C 【@property 的参数问题】

    ———————————————————————————————————————————
    @property参数

    总的来说,这是一种编译器的特性(在生成@property的时候为@property添加相应的属性)


    格式:@property (参数1,参数2.....) 数据类型  方法名

    ★注:修饰@property的参数,可以有一个,可以有两个,可以有三个,可以很多个!



    (1)是否要生成set方法(若为只读属性就不会生成)
    readonly:只读,只会生成getter的声明和实现(只有get方法)
    readwrite:默认的,同时生成setter和getter的声明和实现

    (2)多线程管理选择(苹果在一定程度上屏蔽了多线程操作)
    nonatomic:高性能,一般使用这个
    atomic:默认的,低性能

    (3)@property 参数 -strong、weak

    strong和weak主要用自动计数中,weak只能在自动引用计数中使用。(自动引用计数其实就是自动管理内存)

    strong的功能相当于retain。

    weak相当于assign,当用weak修饰的变量为空时,变量初始化为nil,而assign修饰的变量为空时并没有初始化。

    协议指定的对象因当使用weak,用来打破引用循环。

    (4)getter、setter方法的补充

    @property (nonatomic,setter=setColor,getter=isColor) int age;

    这种方法比较的lowB,因为我们写了一个color的set方法,但是却用来接收处理age。(我们只是验证这样是可以的,但是不建议用)


    (5)在set、get内存管理机制这个属性中,我拿出assign和retain进行详细的说明,copy暂时不讲。

       




    (有一个小总结:如果在类的声明中实例变量有OC对象类型的,那么就要在dealloc里面将这个OC对象release一下,如果在main函数中new了一个OC实例对象,那么就要在main函数的结尾同样release这个实例对象)

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    iframe的两种通信方式,iframe的history的优先级
    React-router 将弹框Modal嵌入路由(create a modal route with react-router)
    vue 项目构建 + webpack
    vue 生命周期,v-bind 和 v-on的区别(或 : 和 @的区别),以及父传子、子传父的值传递方式
    linux上配置Sonar代码扫描
    玩转jenkins
    程序小猿的rpa----艺赛旗阶段
    学习完level3加入了uipath家庭,欢迎交流学习。小清风的rpa
    程序员小时光的rpa成长之路(艺赛旗)
    数学期望
  • 原文地址:https://www.cnblogs.com/wzy294250051/p/4787882.html
Copyright © 2011-2022 走看看