请教一个 iOS 编程的问题

2015-11-23 23:24:34 +08:00
 Maxbee

@property (nonatomic, strong) NSArray *heros;

代码如上,为什么没有调用 heros 却能获得 renturn 的对象? iOS 新手衷心求指教,想了好久都没想到是为什么,怀疑我自己是不是知识点缺失了。。。

2759 次点击
所在节点    iOS
17 条回复
czwen1993
2015-11-24 00:29:55 +08:00
你没有调用 heros 又怎么知道能获得 retrun 的对象?
pupboss
2015-11-24 00:43:43 +08:00
一看注释就猜是明杰的代码,往下一看还真是他的
pupboss
2015-11-24 00:44:52 +08:00
很明显懒加载嘛
loveuqian
2015-11-24 00:52:03 +08:00
你在自己代码搜索一下 self.heros 有没有出现在哪个等号的左边
有的话,就是在那个地方调用了你重写的这个 get 方法

另外那个 if 判断,现在都写成
if (!_heros)
因为一不小心你的 = 号少写一个。。就废了
就算你要写 == 也要写在左边,就好像
if (0 == number)
LINAICAI
2015-11-24 01:15:16 +08:00
草 你这个数组成员默认的 getter 就是 heros ,你换个方法名就好了。
Maxbee
2015-11-24 07:51:48 +08:00
@pupboss 被你发现了,你也看过?哈哈
HancockXu
2015-11-24 07:53:11 +08:00
楼上正解, heros 变量的 getter 方法也叫 heros ,你只要访问这个变量就会去调 getter 方法。
Maxbee
2015-11-24 07:56:32 +08:00
先感谢你,有,但是是在重写的 heros 里,这样也能调用?
Maxbee
2015-11-24 08:05:38 +08:00
@HancockXu 谢谢,么么哒
Maxbee
2015-11-24 08:07:01 +08:00
@loveuqian 谢谢你,问题解决了,想了一晚上,可能是最近学太多,学蒙了,把一些基础的忘了,谢谢!
Maxbee
2015-11-24 08:07:41 +08:00
@LINAICAI 解决了,感谢!
Maxbee
2015-11-24 08:08:02 +08:00
@czwen1993 解决了,谢谢么么哒
Maxbee
2015-11-24 08:13:05 +08:00
@loveuqian 再问一个问题,这个问题还是有点模糊。在 ViewContorller 里面方法里用_age = xx 这种方法设置的属性,属于哪个对象的?
Keita1314
2015-11-24 09:19:11 +08:00
@Maxbee _age 是实例变量,当前对象的,@property age 只是属性,只不过 @synthesize age = _age 了,所以可以直接用属性来代表获得和设置实例变量,建议看看实例变量与属性相关知识
loveuqian
2015-11-24 09:21:37 +08:00
@Maxbee
你可能要回去看看 @property 做了什么
他帮你生成了一个 _ 开头的成员变量,生成了 setter 和 getter 方法
Maxbee
2015-11-24 12:46:02 +08:00
@Keita1314 👌,感谢!
zhangliang5
2015-11-25 16:07:54 +08:00
@Maxbee gggg

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

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

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

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

© 2021 V2EX