黑马程序员技术交流社区

标题: 关于方法 [打印本页]

作者: 微尘•逐梦    时间: 2014-4-29 15:56
标题: 关于方法
本帖最后由 微尘•逐梦 于 2014-4-29 17:57 编辑

如果未在@property···@end之间进行方法声明,只在@implemenation···@end进行了方法实现,这个方法能否进行使用,有没有什么特殊场合使用这种写法?
作者: 脸皮猴    时间: 2014-4-29 16:09
按道理是能够使用的。你可以测试下。但是这种方法只在这个.m文件中能用,因为别人包含这个类的.h文件,不会包含这个.m文件,所以别人不知道你有这个方法,所以在别的.m文件应该就不能用了
作者: 魅影穿眸    时间: 2014-4-29 16:20
不能把,你都没声明,编译器怎么知到这个方法
作者: 脸皮猴    时间: 2014-4-29 16:21
魅影穿眸 发表于 2014-4-29 16:20
不能把,你都没声明,编译器怎么知到这个方法

在当前.m文件能使用,超出这个.m文件就无法使用了。
作者: 微尘•逐梦    时间: 2014-4-29 16:28
脸皮猴 发表于 2014-4-29 16:21
在当前.m文件能使用,超出这个.m文件就无法使用了。

我看进阶篇中确实有这样定义方法的,只使用在.m文件中。
作者: liulinjie    时间: 2014-4-29 17:52
(快速入门里面讲到了) ( 你写的 @property 是不是指的 @interface?)
未在.h文件中声明但是在.m文件中实现的方法相当于.m文件的私有方法, 只可以在当前.m文件中使用.
使用场合: 比如.h文件中声明了一个求乘方的方法, 在.m文件中实现这个求乘方的方法时, 调用了一个辅助的求积的方法, 这个辅助方法外界并不需要使用, 那这个方法就可以不在.h中声明, 只作为.m的私有方法.
作者: 微尘•逐梦    时间: 2014-4-29 17:57
liulinjie 发表于 2014-4-29 17:52
(快速入门里面讲到了) ( 你写的 @property 是不是指的 @interface?)
未在.h文件中声明但是在.m文件中实现的 ...

是@interface,打错了,谢谢。
作者: liulinjie    时间: 2014-4-30 21:43
呃补充一下,
刚刚突然发现, 还有一种只在类的.m中定义不在.h中声明的情况, 是重写父类的函数, 比如 (void) description, 重写的函数就不需要在.h文件中声明, 可以被系统自动调用.




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2