• iOS-关于@property和@synthesize


    最近在研究自定义控件,想找到一个比较规范的自定义控件方法,然后我又遇到了一直都迷惑,从来没搞明白的问题

    @property和@synthesize

    这是个灾难!!!我竟然用了这么久的@property还是没搞明白好想死!!!

    问题1:@property和@synthesize到底做了什么

    在之前的时候,@property是用来代替声明变量的时候的set 、get方法,而@synthesize是为了代替set、get方法的实现

    比如说,如果不用@property来声明变量的话,就要这样写

     

    而使用了@property来声明的话就简洁很多

    将的两种写法对比,可以得知,@property代替了属性声明时的set、get方法,@synthesize代替了set、get方法的实现

    当然,这是之前的oc语言写法,现在的情况是:使用@property来声明属性的时候,已经不需要来写@synthesize了,系统会自动添加这行代码

    但是

    如果你写成了@synthesize name;  那么后面你使用这个属性的时候就要写self.name 或者直接写 name ,不能在写_name.

    关于下划线有一篇博客写的很经典http://blog.csdn.net/ztp800201/article/details/9231617

    虽然现在已经告别了@synthesize,但是有时候你可能需要重写get,set的实现方法,比如说在自定义控件的时候

    下面是一个自定义控件的例子

    当在自定义的控件中添加subView的时候,使用重写get方法的方式来实例化view

    这种方法是在写自定义控件的时候在一篇博客上看到的,到底为什么这样写我也不是很清楚,貌似可以使代码更简洁?

    但是我们知道,系统自动创建的get方法中并没有自动创建实例变量,在使用NSString和数值类型的时候没有问题,但是在使用数组等对象类型的时候就会发现对象一直都是nil

    这是因为系统不会自动帮你实例化,所以你要自己手动实例化,在viewdidload中实例化或者在重写get方法中实例化都可以

  • 相关阅读:
    leetcode-Binary Tree Inorder Traversal
    leetcode- Isomorphic Strings
    Ascii码表对应(摘至百度)
    leetcode-Happy Number
    leetcode-Bulls and Cows
    leetcode-Group Anagrams
    14、排序:插入类排序和交换类排序
    13、自平衡二叉查找树AVL
    11、创建Huffman树,生成Huffman编码
    10、二叉树的遍历+查找
  • 原文地址:https://www.cnblogs.com/chebaodaren/p/5261223.html
Copyright © 2020-2023  润新知