在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的这种声明方式,我也不是很懂,请高人给讲解一下。

解决方案 »

  1.   

    @interface AAA() 声明类别 
     就是扩展AAA类中的方法 
     
      

  2.   

    你这种申明方式,只有A.m自己能使用,类似私有方法。@interface AAA()
    -(void)SetA:(NSString*)Name;
    @end
      

  3.   

    我觉得不应该出现异常,应该出现警告吧!
    @interface AAA()
    -(void)SetA:(NSString*)Name;
    @end
    这部分你定义在.m源文件中,所以SetA方法是一个AAA类的私用方法 在外部调用是有问题的,我尝试过好像不会出现错误,而是出现警告吧(我也很疑问为什么没有出现错误?)你如果想要外部调用该方法  绝对不能学成私有的方法 你可以这样做:将
    @interface AAA()
    -(void)SetA:(NSString*)Name;
    @end  写到.h申明文件中  就好了
    这样做,在才真正的起到了AAA类方法的扩张
      

  4.   

    @interface AAA()
    -(void)SetA:(NSString*)Name;
    @end
    定义在A.H 或者 B.H 或者 B.M中
      

  5.   

    -(void)SetA:(NSString*)Name;是内部方法,只能在A.M中使用,应改在a.h文件中写这个方法,才能在外部调用
      

  6.   

    -(void)SetA:(NSString*)Name
    用在a.h文件中,外部b文件调用a.h文件后,就可以访问到这个方法了你写在.m内部 ,作为本m文件的扩充方法,私有的,只能自己a.m调用得到
      

  7.   

    @interface AAA()
    -(void)SetA:(NSString*)Name;
    @end在这里被定义的方法,均是私有方法。所以你在别的类中调用时会回找不到该方法而报错。
    解决方法是,将方法定义在@interface AAA 中