我如何比较两个NSArray,以便我可以删除两个数组中没有的所有内容.
我试过这样的:
NSArray *array1 = [NSArray arrayWithObjects:@"1",@"2",@"3",@"4", nil];
NSArray *array2 = [NSArray arrayWithObjects:@"1",@"2",@"5",@"6", nil];
NSMutableArray *myMutableArray = [NSMutableArray arrayWithArray:array1];
NSMutableArray *myMutableArrayTwo = [myMutableArray copy];
[myMutableArray removeObjectsInArray:array2];
[array1 release];
[array2 release];
NSArray *array3 = [myMutableArray copy];
[myMutableArrayTwo removeObjectsInArray:array3]; // Error here: "SIGABRT"
NSLog(@"array3:%@",myMutableArrayTwo);
Run Code Online (Sandbox Code Playgroud)
但由于错误,它不起作用.它是:" - [__ NSArrayI removeObjectsInArray:]:无法识别的选择器发送到实例0x4e51550"
我做错了什么?或者有更简单的方法来解决我的问题?谢谢您的帮助
我正在努力与运算符重载,因为我希望它允许链接
class A{
int a;
public:
void doSomething(char *str);
A operator<<(char *str);
}
Run Code Online (Sandbox Code Playgroud)
所以我有这个课,我能做的就是拿一个字符串做一些事情,这对这个问题并不重要.
我现在能做的是
A *counter = new A();
counter->doSomething("hello");
Run Code Online (Sandbox Code Playgroud)
如果我实现了重载的移位运算符
A A::operator<<(char *str)
{
this->doSomething(str);
return this;
}
Run Code Online (Sandbox Code Playgroud)
我可以像这样写
A *counter = new A();
(*counter) << "hello";
Run Code Online (Sandbox Code Playgroud)
我希望我在这里没有犯错,因为现在我想知道我怎么能允许链接
(*counter) << "hello" << "test";
Run Code Online (Sandbox Code Playgroud)
我知道通过链接可以做到这一点
(*counter).operator<<("hello" << "test");
Run Code Online (Sandbox Code Playgroud)
这显然没有任何意义,因为有两个字符串/字符串数组但我知道有一种方法可以做到这一点.我用谷歌搜索它,但每个问题只是关于将相同类型的实例链接在一起
然后我尝试将两个参数放入函数并将其添加为朋友...我不确定但是我可能需要使用类型char*或流对象创建一个新的重载运算符并使其成为朋友A?
感谢您的帮助,我想应该有一个我现在看不到的简单答案.