iOS 开发大大们,对于这种不使用 property 的写法,是怎样看待的?是否认同?

2017-02-08 10:57:38 +08:00
 BoBoy

这是我一个同事写的,超喜欢使用这个方式来定义全局属性,反正我是感到无语。 因为他是项目老人,也没人去说这种事情到底是不是应该这样做,没一点规范,醉了。

3693 次点击
所在节点    iOS
39 条回复
lltctt
2017-02-08 11:00:00 +08:00
图呢...
BoBoy
2017-02-08 11:05:41 +08:00
@lltctt 有的。
BoBoy
2017-02-08 11:06:52 +08:00
#import "KBScanMaskView.h"
#import <Masonry.h>

@interface KBScanMaskView ()
{
CAShapeLayer *_shapeLayer;
CGRect _cutoutRect;

UIView *_leftTopCorner_hor_view;
UIView *_leftTopCorner_ver_view;

UIView *_rightTopCorner_hor_view;
UIView *_rightTopCorner_ver_view;

UIView *_leftBottomCorner_hor_view;
UIView *_leftBottomCorner_ver_view;

UIView *_rightBottomCorner_hor_view;
UIView *_rightBottomCorner_ver_view;
NSMutableArray *_stripes;

UILabel *_promptLabel;

UIView *_redLine;
NSTimer *_timer;
}

@end
kera0a
2017-02-08 11:08:38 +08:00
看变量的类型和作用~ 没感觉有啥问题~
BoBoy
2017-02-08 11:17:19 +08:00
@kera0a 不论什么类型,我都不推荐这样写, 苹果官方也没见有这种写法。
a412739861
2017-02-08 11:18:02 +08:00
以前的代码应该都是这么写的。不过这么写有一个问题
coldmn3
2017-02-08 11:18:52 +08:00
iVar 没有什么问题啊,也许只是看着不够"Modern"吧
a412739861
2017-02-08 11:18:53 +08:00
@a412739861 #6 怎么就发出去了…………
需要写 weak 的时候,感觉特别啰嗦,尤其是要调用多个实例变量的时候。
Creolophus
2017-02-08 11:24:18 +08:00
这样写如果需要调用这些变量的 set 和 get 方法就很麻烦了吧......
lltctt
2017-02-08 11:42:13 +08:00
我是来吐槽命名的...
SeanChense
2017-02-08 11:46:38 +08:00
所以楼主认为这样有什么错呢?至少这得说清楚吧。
junyixin
2017-02-08 11:50:16 +08:00
#10 +1
kera0a
2017-02-08 11:51:50 +08:00
@BoBoy 阅读过很多知名开源库,都有这种写法~~

个人理解,这种变量,就是个私有变量的指针引用~ 不会有其他作用 ,不需要 get set 方法,不需要属性修饰符那些功能
hohoho
2017-02-08 11:55:37 +08:00
如果项目强制这种格式那就服从或者说服领导从现在开始用 property 代替吧,如果不强制你可以自己用 property 格式去写。

毕竟这个也不算错,就如楼上说的不够 modern ,有得人确实比较怀旧而不愿改变,而且有得人会认为用 property 会发送 get/set message 影响性能。强制改变别人的习惯挺难的。
SeanChense
2017-02-08 11:58:14 +08:00
@kera0a “不需要属性修饰符”不准确,默认是被 `__strong` 修饰。
loveuqian
2017-02-08 12:00:38 +08:00
直接调用 _ 变量和调用 set/get 已经没有明显性能差距了吧
就算你用 property 来写,一样可以使用 _ 来调变量啊

只能说这种写法,我接盘的这个 14 年的项目,也有。。。

//
// ***AppDelegate.m
//
// Created by *** on 3/16/14.
// Copyright (c) 2014 ***. All rights reserved.
//
shawngao
2017-02-08 12:12:26 +08:00
我是来猜功能的,二维码扫描?
DSKcpp
2017-02-08 12:35:22 +08:00
对于暴露在外的我一律用 property ,私有的看情况是否需要 property ,反正我是这样写的,我看很对著名开源库都用了这种方法
xi_lin
2017-02-08 12:44:38 +08:00
老写法是这样的
xuyuheng0905
2017-02-08 12:45:13 +08:00
内部属性我个人也是倾向于这种做法,除非有特殊需要,如支持 copy 等,对外属性一律 property 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/338954

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX