Objective c 什么';目标c的范围是什么

Objective c 什么';目标c的范围是什么,objective-c,ios,categories,Objective C,Ios,Categories,如果覆盖类别中的某个方法,它只会影响包含它的文件,还是会影响整个项目? 我想重写“methodSignatureForSelector”和“forwardInvocation”以忽略NSNull的未定义选择器错误。所以我想知道这是否只影响包括它在内的文件。提前谢谢。说你在上面定义了a类和C类。 每个类都有自己的.h.m文件 “影响”类别是什么 至于编译,只有导入C.h文件的编译单元(.m文件)。比如:在导入该标题的文件中,您不会收到关于未定义选择器的警告(当然,对于C.h中定义的选择器);在其他

如果覆盖类别中的某个方法,它只会影响包含它的文件,还是会影响整个项目?
我想重写“methodSignatureForSelector”和“forwardInvocation”以忽略NSNull的未定义选择器错误。所以我想知道这是否只影响包括它在内的文件。提前谢谢。

说你在上面定义了a类和C类。 每个类都有自己的.h.m文件

“影响”类别是什么

至于编译,只有导入C.h文件的编译单元(.m文件)。比如:在导入该标题的文件中,您不会收到关于未定义选择器的警告(当然,对于C.h中定义的选择器);在其他文件中,您将收到此类警告

至于链接(或执行,在Objective-C中非常接近),所有可执行文件都会受到影响


事实上,即使您没有在(比如)B.m中导入C.h文件,如果B.m使用C.h中定义的选择器,该调用也会成功(即,将有效地使用您类别中的实现),但您在编译B.m时仍会收到警告。如果B.m是在不同的时间编译的,这也将适用(即,在创建类别之前)。

类别是否在一个单独的文件中?为什么要做如此令人发指的事情?!@bbum我使用了JSON解析器,它将为JSON中的“null”生成NSNull对象。我想在调用[title length]时忽略错误当title为NSNull时。我不确定这是否正确。不,真的,你不想这样做。这样做会使整个应用程序中的每一条
NSNull
忽略这些消息,这会掩盖错误。如果你想
null
字符串等同于空字符串,那么在服务器端或解析器上都要这样做;不要“不要用行为怪异的对象来污染对象图,以解决数据模型中的脆弱性。现在看起来很有吸引力,但你的理智稍后会受到影响。谢谢。同意你的看法。但是处理JSONFramework中的NSNull值仍然很痛苦。找到了一个实用的解决方案:@bbumthanking@sergio。换句话说,没有问题。”我使用类别覆盖方法并将其仅应用于项目中的某些.m文件的方式?提前感谢您的澄清。最后一段是不正确的,至少对于Xcode 4。如果您不导入类别.h,Xcode将发出错误而不是警告。因此,您甚至无法成功构建。导入类别标头是一个m乌斯特。