请教一个@interface的问题

ttt1985 2012-06-06 02:40:32
在A.H文件里声明一个类
@interface AAA:UIViewController
{
  。。。
}
@end
在A.M文件里 又声明一次
@interface AAA()
-(void)SetA:(NSString*)Name;
@end

之后,我在另一个B.M文件里,我想调用SetA方法。
AAA *a =[[AAA alloc]init];
[a SetA:name];
直接就抛出异常了,请问是哪里有错了。

另外AAA的这种声明方式,我也不是很懂,请高人给讲解一下。
...全文
228 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzxxdd 2012-10-24
  • 打赏
  • 举报
回复
3楼正解
ReyZhang 2012-10-19
  • 打赏
  • 举报
回复
@interface AAA()
-(void)SetA:(NSString*)Name;
@end

在这里被定义的方法,均是私有方法。所以你在别的类中调用时会回找不到该方法而报错。
解决方法是,将方法定义在@interface AAA 中
qianlima210210 2012-10-15
  • 打赏
  • 举报
回复
a21064346,说的不错
相奇 2012-10-15
  • 打赏
  • 举报
回复
-(void)SetA:(NSString*)Name
用在a.h文件中,外部b文件调用a.h文件后,就可以访问到这个方法了

你写在.m内部 ,作为本m文件的扩充方法,私有的,只能自己a.m调用得到
tao308 2012-10-15
  • 打赏
  • 举报
回复
-(void)SetA:(NSString*)Name;是内部方法,只能在A.M中使用,应改在a.h文件中写这个方法,才能在外部调用
古都一猿 2012-06-13
  • 打赏
  • 举报
回复
@interface AAA()
-(void)SetA:(NSString*)Name;
@end
定义在A.H 或者 B.H 或者 B.M中
__Hadley 2012-06-10
  • 打赏
  • 举报
回复
我觉得不应该出现异常,应该出现警告吧!
@interface AAA()
-(void)SetA:(NSString*)Name;
@end
这部分你定义在.m源文件中,所以SetA方法是一个AAA类的私用方法 在外部调用是有问题的,我尝试过好像不会出现错误,而是出现警告吧(我也很疑问为什么没有出现错误?)

你如果想要外部调用该方法 绝对不能学成私有的方法 你可以这样做:将
@interface AAA()
-(void)SetA:(NSString*)Name;
@end 写到.h申明文件中 就好了
这样做,在才真正的起到了AAA类方法的扩张
getKeyIndex 2012-06-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

你这种申明方式,只有A.m自己能使用,类似私有方法。
C/C++ code

@interface AAA()
-(void)SetA:(NSString*)Name;
@end
[/Quote]
不对吧?

暂时也看不出来哪儿有问题,晚上回去调调试试,报的什么错啊?你换个方法名试试。
Gil 2012-06-06
  • 打赏
  • 举报
回复
你这种申明方式,只有A.m自己能使用,类似私有方法。

@interface AAA()
-(void)SetA:(NSString*)Name;
@end
ttt1985 2012-06-06
  • 打赏
  • 举报
回复
那为什么会抛出异常呢
半瓶子咣当 2012-06-06
  • 打赏
  • 举报
回复
@interface AAA() 声明类别
就是扩展AAA类中的方法

29,028

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧