개체를 만드는 방법은 bytes
입니다. 사과 문서에서dataWithBytesNoCopy : 길이 : 메모리 관리
-(NSData *)dataFromBytes
{
...
void *data = malloc(bytes);
...
return [NSData dataWithBytesNoCopy:data length:bytes];;
}
는 :
반환되는 객체는 바이트 포인터의 소유권을하고 해제에 그것을 를 해제합니다.
발신자 기능에서 데이터 개체를 반환해야합니까?
-(void)testFunction
{
NSAutoreleasePool *nsp = [[NSAutoreleasePool alloc] init];
NSData *ldata = [mObject dataFromBytes];
NSlog(@"%@", ldata)//printing data
[nsp release];
NSlog(@"%@", ldata)//Not printing data //sometimes getting exc_bad_access
}
객체가 하나의 소유권을 갖기 때문에 객체의 메모리 관리 규칙이 변경되지 않습니다 개체의 해제 여부는 [규칙] (http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/MemoryMgmt/Articles)에 명시된대로 메서드의 이름에 따라 결정됩니다. /mmRules.html) –
@PeterHosey 고마워. 질문이 하나 더 있는데 왜 내 응용 프로그램이 10.6 및 10.7에서 제대로 작동하는지 (반환 된 데이터 개체가 릴리스 됨) –
가끔 10.5에서 충돌합니다. –