2013-02-05 3 views
0

나는 다음과 같은 코드를 사용하여 이미지 파일을 기반으로 단일있는 UIImage를 생성하고 복제하는 동안 : 다음 반복하고있어있는 UIImage 너무 많은 파일이있는 UIImage 개체

UIImage *myImage = [[UIImage alloc] initWithContentsOfFile:myImagePath]; 

을하고있는 UIImage 속성을 포함하는 많은 개체가이 myimage을 추가를 . 어느 날 다음과 같은 오류가 결과 :

error = 24 (Too many open files)

내 질문에 내가 그것을 사용하여 파일 참조를 복제하지 않고있는 UIImage를 복제 할 방법이다. 어떤 일이 일어나는 것 같습니다.

+0

새로운 이미지 뷰에 할당해야 할 때마다 할당/초기화합니까? –

+0

그래, 내가하고있는 중이 야. myobj.graphics = [[UIImageView alloc] initWithImage : myImage] –

+0

당신이하는 일을 볼 수 있도록 질문에 루프를 포함시킬 수 있습니까? –

답변

2

이 줄을 루프 외부에 배치하십시오.

UIImage *myImage = [[UIImage alloc] initWithContentsOfFile:myImagePath]; 
+0

죄송합니다. 추가 정보를 보내주십시오. 내가 루프 내부에 다음과 같은 일을 해요 : myObj.graphics의 = [[UIImageView에 ALLOC] initWithImage : myimage을] 그래픽이 myimage을을 사용할 필요가있는 UIImageView 것. –

+0

그리고 그의 대답은 정확합니다, 루프 외부에 이미지를 할당하고 루프 내의 그래픽 객체에 해당 참조를 할당하십시오. –

+0

외부에 할당하고 루프 내부에 참조를 할당하면 각 객체는 그래픽의 동일한 인스턴스를 사용합니다 . 예를 들어, uiimage.hidden = on을 수행하면 모든 객체가 사라지고 원하는 동작이되지 않습니다. 파일 참조없이 원본 이미지를 복사 할 수 있는지 알고 싶습니다 (가능한 경우). 나는 cgimage를 다시 시도했지만 같은 문제가있었습니다. –