2017-10-30 2 views
1
guard let tempDirURL = NSURL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent("MyAppStuff.xxx") else { 
     return nil 
    } 

내 질문은 : tempDirURL.path 항상 중간에 공백이 없습니까? 문서에서공백없이 NSTemporaryDirectory()

편집 : enter image description here

+2

경로에 공백이있을 때 복원력이 좋은 코드를 작성하지 않으시겠습니까? 임시 디렉터리 경로에 대해서는 특별히 보장되지 않습니다. 그렇게 말하면 현재 공간에 공간이 없다면 이런 문제가 발생하여 기존 앱이 제대로 처리하지 못할 것입니다. 그래서 모두에게 호의를 베풀고 공백을 올바르게 처리하려고 노력하십시오. –

+0

미안하지만 내가 할 수있는 최선의 방법은 내 질문에 대한 대답을 수락하는 것입니다. 호소하지 않으면 의견을 게시하지 마십시오. 정책에 따라 일부 바이너리를 덤프해야하는 앱을 만들고 있습니다. 바이너리의 일부 위치를 패치 한 후,이 바이너리는 컴파일 된 프레임 워크에서 디바이스로 플래쉬됩니다. 그것은 고객의 계약입니다. 가끔 공간을 처리하고 싶다면 아무런 문제가 없습니다. NSAppleScript를 사용하지 마십시오. 다른 방법으로는이 경우 원치 않는 도우미 도구를 작성하는 것이 좋기 때문에 높은 권한으로 작업 할 수 있습니다. 또한 그들은 그것을 지불하지 않았습니다. – Mike97

+0

왜 내가 필요한지에 대한 첫 번째 글을 편집했습니다. 질문은 간단합니다. Apple의 출처에 대해 살펴볼 수는 없으며 그 문제에 관한 문서는 없습니다 (내가 틀렸다면 수정하십시오). – Mike97

답변

1

이 API 계약 NSTemporaryDirectory()에 의해 반환되는 경로에 공백이 포함되지 않습니다 보장하지 않습니다; 그러므로 당신은 그것이 불가능하다고 생각할 수 없습니다. 경로에 파일 시스템이 허용하는 모든 문자가 포함될 가능성을 고려해야합니다.

+0

GNUStep-NSTemporaryDirectory()가 해당 경로에 사용자 이름을 추가했기 때문에 (예 : 발생할 수 있음이 분명 함) Cocoa 마녀와 다른 것은 아닙니다 (https://lists.gnu.org/archive/html 참조). /discuss-gnustep/2001-04/msg00032.html). 코코아에서는 상황이 다르고 예제 (내 새 편집 내용 참조)가 "예지"라는 점도 분명합니다. – Mike97

+1

@ Mike97 지금 코코아 *에서는 일어나지 않습니다. 그러나 약속되지 않은 사항은 언제든지 변경할 수 있습니다. 실제로 NSTemporaryDirectory()의 위치는 과거에 변경되었습니다. 이전에는'/ var/folders'에 있었지만'/ tmp' 내부에있었습니다. 그것은 미래에 다시 변할 수 있습니다. 그럴 경우 코드가 깨지지 않도록 코드를 작성해야합니다. –

+0

엄격하게 좋은 코드 문제가 아니라 단지 언어가 아닌 AppleScript를 싫어합니다 (또는 그렇습니까?). 나는 도우미를 쓰는 방법을 찾았는데 (나는 재사용 할 것이지만 .. 그들에게는 좋지 않다.). 이것은 고객이 일부 장치를 프로그래밍해야하는 Windows 도구의 맥 변형입니다 ... 그러나 가격 책정으로 인해 AppleScript로 시간을 낭비 할 수 없으므로 가능한 버그를 알리거나/private/tmp로 돌아갑니다. 어쨌든 NSTemporaryDirectory()가 비밀이 아니며 3 일 동안 지속되는 것처럼 보이지 않으므로 아무도 소중한 임시 파일 (두려움)을 훔치지 않습니다. – Mike97