OC基础[email protected]后的修饰符及其用法小结

[email protected]后的修饰符

strong : 该属性值对应 __strong 关键字,即该属性所声明的变量将成为对象的持者,等同于"retain"

weak : 该属性对应 __weak 关键字,与 __weak 定义的变量一致,该属性所声明的变量将没对象的所权,并且当对象被释放之后,对象将被自动赋值nil,记住IBOutlet应该使用weak
copy : 和之前的copy一样,复制一个对象并创建strong关联
assign : 对象不能使用assign,但原始类型(BOOL、int、float)仍然可以使用

常见问题:

  • @property 后面可以有哪些修饰符?
  • 什么情况使用 weak 关键字,相比 assign 有什么不同?
  • 怎么用 copy 关键字?
  • 这个写法会出什么问题: @property (copy) NSMutableArray *array;
  • 如何让自己的类用 copy 修饰符?如何重写带 copy 关键字的 setter?

这一套问题区分度比较大,如果上面的问题都能回答正确,可以延伸问更深入点的:

  • @property 的本质是什么?ivar、getter、setter 是如何生成并添加到这个类中的
  • @protocol 和 category 中如何使用 @property
  • runtime 如何实现 weak 属性
时间: 2024-10-24 18:57:40

OC基础[email protected]后的修饰符及其用法小结的相关文章

private/默认/protected/public权限修饰符的区别

private/默认/protected/public权限修饰符和面向对象的三大特性的封装性有着密切关系.它们都可以修饰类的成员,其中的默认和public还可以修饰类. 类的成员包括:成员变量.成员方法.构造方法.内部类.代码块. 其中: public:修饰类可以被同一项目所有包中的所有类访问(类可见性). 默认:可被同一包中的类访问(包可见性). 小结: 1.内部类属于类的成员,可以使用以上四个修饰符修饰,这一点和类不同. 2.如何使用:类的属性一般使用private修饰,可以通过public

[email protected] $location.path('/login')-$location服务用法示例

$httpProvider interceptor .factory('auth403', ['$rootScope', '$q', '$location', function auth403($rootScope, $q, $location) { return { request: function (config) { console.log(config); var start = new Date(); return config; }, response: function (res

【java基础知识】【public、default、protected、private等修饰符的用法】

一直对于这些修饰符概念不是很清晰,趁实习生考核刚结束空出来的时间抓紧时间学习. 1.可以修饰成员变量和成员方法的修饰词有三个加一个缺省.它们的作用域使用如下: 作用域     当前类 同一package 子孙类 其他package public        √          √             √            √ protected   √          √             √            × friendly      √          √  

C#基础知识八之访问修饰符

1.  类的访问修饰符 修饰符 访问权限 无或者internal 只能在同一个程序集中访问类 public 同一个程序集或引用该程序集的外部都可访问类 abstract或internal abstract 只能在同一程序集中访问类,且该类不能被实例化,只能被继承 public abstract  同一个程序集中或引用该程序集的其他程序集都可访问类,不能被实例化,只能被继承 sealed或internal sealed  只能在同一程序集中访问类,该类不能被继承,只能把实例化 public sea

蓝鸥Unity开发基础二——课时3 访问修饰符

[蓝鸥Unity开发基础二]课时3 访问修饰符 一.访问修饰符 public --公共的,在哪里都能用 private  --私有的,只能够在当前机构体重使用,其他任何地方都不能 访问修饰符举例说明 using System; namespace Lesson_03{           struct Point2{        //public--公共的,在哪里都能用        public float x;        //private  --私有的,只能够在当前机构体重使用,其他

java基础语法 (标识符,修饰符,关键字)

一.标识符 定义: 对各种变量.对象.数组.集合.方法.类和包等要素命名时使用的字符序列. (1)组成规则:①英文大小写字母 ②数字 ③$和_ (2)注意事项:①不能以数字开头 ②不能使用java中的关键字 ③区分大小写 (3)常用的命名规则 ①包                  全部小写                                                                                      举例:cn.itcast.com.b

java中修饰符及其用法

1. java中的修饰符 a. 权限修饰符 private,默认的,protected,public b. 状态修饰符 static,final c. 抽象修饰符 abstract 2. 类修饰符 public(访问控制符),将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类,一个.java文件中只能有一个public类,而且文件名必须与该类相同. 默认的,把一个类声明为默认的,可以被同一个包中的其他类使用. abstract,将一个类声明为抽象类,抽象类中可以有抽象方法,也

const 和 readonly 修饰符的用法

1. 只有C#内置类型(int,double,long等)可以声明为const;结果.类和数组不能声明为const. 2. readonly 是在字段上使用的修饰符,直接以类名.字段访问. 3. const 必须在申明中初始化.之后不能再修改. 4. readonly可以在申明中初始化,也可以在构造函数中初始化,其它情况不能修改. namespace const_and_readonly { class Program { static void Main(string[] args) { Co

params修饰符的用法

params修饰符是用来声明参数数组允许向方法传递数量不定的自变量用的.事实上System.Console 类的 Write 和 WriteLine 方法是参数数组用法的典型示例.他们的声明方式如下: public class Console { public static void Write(string fmt, params object[] args) { } public static void WriteLine(string fmt, params object[] args)