这个写法会出什么问题: @property (copy) NSMutableArray *array;

  • 因为copy策略拷贝出来的是一个不可变对象,然而却把它当成可变对象使用,很容易造成程序奔溃
  • 这里还有一个问题,该属性使用了同步锁,会在创建时生成一些额外的代码用于帮助编写多线程程序,这会带来性能问题,通过声明nonatomic可以节省这些虽然很小但是不必要额外开销,在iOS开发中应该使用nonatomic替代atomic
时间: 2024-08-27 23:50:53

这个写法会出什么问题: @property (copy) NSMutableArray *array;的相关文章

objective c, property, copy

@property (copy) nsmutablearray *array -copy, as implemented by mutable Cocoa classes, always returns their immutable counterparts. Thus, when an NSMutableArray is sent -copy, it returns an NSArray containing the same objects. http://stackoverflow.co

用闭包的写法弹出元素的索引值

<!DOCTYPE html><html><head><meta charset="UTF-8"><meta name="description" content=""><meta name="keywords" content=""><title>用闭包的写法弹出元素的索引值</title><!-- &l

[Angular 2] Using a Reducer to Change an Object&#39;s Property Inside an Array

Reducers are also often used for changing a single property inside of other reducers. This lesson shows how a type can enter the people reducer, but then the people reducer can use a different type to call the clock reducer and get a value back. So t

iOS编译错误:Property cannot have array or function type &#39;Block&#39; (aka &#39;void (XXXXView *__st

XXXXView 中的Block错误,原因: typedef void (^Block)(XXXXView *); 在这个demo中忘记写^了,导致此错误 iOS编译错误:Property cannot have array or function type 'Block' (aka 'void (XXXXView *__st

copy关键字

用途:1.NSString.NSArray.NSDictionary 等等经常使用copy关键字,是因为他们有对应的可变类型:NSMutableString.NSMutableArray.NSMutableDictionary:block 也经常使用 copy 关键字,具体原因见官方文档:Objects Use Properties to Keep Track of Blocks:2.block 使用 copy 是从 MRC 遗留下来的"传统",在 MRC 中,方法内部的 block

iOS进阶面试题

1. 风格纠错题 修改完的代码: 修改方法有很多种,现给出一种做示例: // .h文件 // http://weibo.com/luohanchenyilong/ // https://github.com/ChenYilong // 修改完的代码,这是第一种修改方法,后面会给出第二种修改方法 typedef NS_ENUM(NSInteger, CYLSex) { CYLSexMan, CYLSexWoman }; @interface CYLUser : NSObject<NSCopying

iOS开发——面试篇&amp;面试总结(二)

面试总结(二) 1. 风格纠错题 修改方法有很多种,现给出一种做示例: 下面对具体修改的地方,分两部分做下介绍:硬伤部分和优化部分 .因为硬伤部分没什么技术含量,为了节省大家时间,放在后面讲,大神请直接看优化部分. 优化部分 1)enum建议使用 NS_ENUM 和 NS_OPTIONS 宏来定义枚举类型,参见官方的 Adopting Modern Objective-C 一文: 1 2 3 4 5 //定义一个枚举 typedef NS_ENUM(NSInteger, CYLSex) {   

iOS面试题整理(上) 仔细研读受益匪浅

1. 风格纠错题 修改完的代码: 修改方法有很多种,现给出一种做示例: // .h文件 // http://weibo.com/luohanchenyilong/ // https://github.com/ChenYilong // 修改完的代码,这是第一种修改方法,后面会给出第二种修改方法 typedef NS_ENUM(NSInteger, CYLSex) { CYLSexMan, CYLSexWoman }; @interface CYLUser : NSObject<NSCopying

iOS面试题大全1-24

1.风格纠错题 2. 什么情况使用 weak 关键字,相比 assign 有什么不同? 什么情况使用 weak 关键字? 在 ARC 中,在有可能出现循环引用的时候,往往要通过让其中一端使用 weak 来解决,比如: delegate 代理属性 自身已经对它进行一次强引用,没有必要再强引用一次,此时也会使用 weak,自定义 IBOutlet 控件属性一般也使用 weak:当然,也可以使用strong.在下文也有论述:<IBOutlet连出来的视图属性为什么可以被设置成weak?> 不同点: