Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 对其他类隐藏类别_Ios_Objective C_Objective C Category - Fatal编程技术网

Ios 对其他类隐藏类别

Ios 对其他类隐藏类别,ios,objective-c,objective-c-category,Ios,Objective C,Objective C Category,我已经为UIImagePickerController编写了一个类别,我只希望由一个特定的类访问它。该类别包含两个私有方法的重写。我遇到的问题是,无论我如何定义类别,似乎每个实例化UIImagePickerController的类都会覆盖这些方法。据我所知,这是创建类别时的预期行为,但有什么办法可以避免吗 我曾尝试在一个单独的.h/.m文件中定义该类别,并将其直接添加到一个单独类的实现中,但这两种方法似乎都不起作用。我还尝试创建一个额外的类别,为这些方法调用super,但原始类别似乎仍然占据优先

我已经为
UIImagePickerController
编写了一个类别,我只希望由一个特定的类访问它。该类别包含两个私有方法的重写。我遇到的问题是,无论我如何定义类别,似乎每个实例化
UIImagePickerController
的类都会覆盖这些方法。据我所知,这是创建类别时的预期行为,但有什么办法可以避免吗

我曾尝试在一个单独的.h/.m文件中定义该类别,并将其直接添加到一个单独类的实现中,但这两种方法似乎都不起作用。我还尝试创建一个额外的类别,为这些方法调用super,但原始类别似乎仍然占据优先地位


有什么想法或者这是不可能的吗?

类别确实不是覆盖方法的好选项。这样做是可能的,但不只是针对特定的调用方(除非您的重写有办法确定调用它的内容,然后可以调用原始方法——这需要找出保存其位置的方法)。为什么?为什么不使用子类?您无法可靠地重写类别中的方法。无论调用原始方法还是类别方法都未定义。@MartinR:只有原始方法本身在类别中定义时,行为才未定义。否则,原始类将被可靠地删除(当然,这本身就是一个问题)。@JoshCaswell:From:如果在类别中声明的方法的名称与原始类[…]中的方法相同,则在运行时使用的方法实现的行为是未定义的。