다른 어떤 것보다 파이썬에 대한 경험이 많기 때문에 변경 가능 대 불변의 배열 및 dicts를 사용하는 것이 조금 이상합니다. 정말 4.5 추가했다 엑스 코드 리터럴 구문을 즐기고 있지만, 몇 가지 간단한의 간섭이 일에 나는이 같은 상황 건너에 대해 :리터럴 구문과 mutableCopy 및 Objective-C 컴파일러 경고
NSArray *myArray = [@[/*array objects here*/] mutableCopy];
[myArray addObject: @/*an object goes here*/];
및 컴파일러에서 myArray을 응답하지 않을 수 있습니다 "라는, 나에게 경고를 제공 to addObject "를 호출하십시오.
코드 컴파일 및 addObject 잘 작동합니다, NSLog 개체 수 있으며 myArray 존재하는지 확인 -하지만이 경고의 특성을 완전히 이해하지 못합니다. 이 상황에서 mutableCopy가 NSMutableArray를 반환하지 않습니까? 단순히 NSMutableArray를 사용하고 리터럴 구문을 사용하려고 시도하는 것이 더 적절합니까?
또한 바보 같은 경고이기 때문에 무시하고 계속할 수 있습니까? 그건 ... 최악의 경우 게으른 것 같아요. 그리고 아마도 미래의 헛소리들에 대한 문을 열어두기 만합니다.
NSMutableArray를 NSArray 포인터에 할당했기 때문에 컴파일러 경고가 표시됩니다. 컴파일러는 당신의 말로 당신을 데리고 NSArray가'addObject'를 구현하지 않는다고 불평합니다. –
슬프게도 나는 랩톱에서 Xcode로 멀리 떨어져있다. NSMutableArray와 같은 코드를 할당하려 할 때 리콜러가 mutableArray를 사용하지 않는 방법에 대해 다른 오류가 발생했습니다. 따라서 mutableCopy 메시지. 어쩌면 이것은 마지막 업데이트에서 변경되었거나, 아마도 내가 간과 한 것입니까? –
오른쪽 - 당신은'mutableCopy' 호출을하지 않았으므로 리터럴로부터 얻은 것은 NSArray입니다. NSArray에'addObject'를 할 수 없습니다. 당신은 적절하게'mutableCopy' 호출을 추가했지만 동시에 결과 데이터 타입을 NSMutableArray로 변경하지 않았습니다. 이것이 당신의 문제입니다. –