1
morefreeze 2016-01-06 19:57:05 +08:00 1
似乎以后都可以少打 4 个字符?
|
2
LMkillme OP @morefreeze 实际上是多打了几十个字符……
|
3
kevinzhwl 2016-01-06 20:04:50 +08:00 via Android 1
不熟 oc ,是不是前面是局部变量,后面是成员变量?
这样还是有点现实意义的,方便。 效率上编译器应该会优化的 |
4
noli 2016-01-06 20:07:05 +08:00 1
非要细究的话,可能的考虑就是 在
dataSource registerReusableViewsWithCollectionView: 之前可能会被另外一个线程改变 self.collectionView |
6
LMkillme OP @noli 另一个线程改变了 self.collectionView ,那此处的 collectionView 所指向的 collectionView 也是变了呀。
|
8
fly2never 2016-01-06 21:56:12 +08:00 1
如果方法内用到了几十次 self.collectionView, 那么这么节省一下字符是有意义的
|
10
josephshen 2016-01-06 23:09:41 +08:00 via iPhone 1
经常这样写,一是如果函数长可以少打点字,二是这样去掉 self 后肉眼 parser 更连贯,三是如果这样写能让右边段落对齐或者长短有秩的话、看上去更美就这样写
|
11
iyeatse 2016-01-07 01:11:38 +08:00 1
苹果官方的例子有很多地方这么写,我就学着这么写了。
脑洞一下,除了看起来整齐以外,每次调用 self.collectionView 实际上都是调用了一次 selector ,执行效率上可能会有问题。。? |
12
canautumn 2016-01-07 01:49:30 +08:00 1
每次调用 property getter 会有额外开销,有人实际对比测试过,但其实因为额外开销只有你重复调用成千上万次才比较显著。即使想避免额外开销,也可以直接调用 Instance Variable (下划线开头的)而不用再赋值一次指针。根据 Effective Objective-C 2.0 ,内部访问成员变量时推荐在读取时直接访问 Instance Variable ,而写入时访问 property ,以获取性能和封装性的最佳平衡。
当然了,写成这样也不错,肯定也有他的理由,但我觉得只是风格不同罢了。 |
13
canautumn 2016-01-07 02:03:40 +08:00 1
刚才只看了楼上讨论没仔细看代码,我之前说错了,这个地方应该不是风格考虑而是线程安全的考虑。 4 楼才是正解。
有一个几乎一模一样的例子,在某期 objc.io 讲 thread safe 的时候应该有提到。 |
14
LMkillme OP @canautumn 正解,感谢。文章地址 http://objccn.io/issue-2-4/
|
15
Alchemistxxd 2016-01-15 12:29:28 +08:00
其实就是保存了一个指针,用于指向这个实例,确保在 self.property 指针被修改后也能访问到他,我以前在用 DisplayLink 的时候就踩过这种坑。
|
16
josephshen 2016-04-01 01:01:42 +08:00 via iPhone
我虽然不怎么写 iOS ,但是这个似乎是一个 UI 操作,无论如何 UI 操作不都是应该避免多线程的么?所以你们不觉得上面的说法是不妥的嘛?
|
17
LMkillme OP @josephshen UIKit 本身并不是线程安全的。
|