'UnsafePointer <UInt8>'을 초기화하면 댕글 링 포인터가 발생합니다.

Mavro

SWIFT 5 / XCODE 프로젝트에서 몇 가지 경고를 정리하려고하는데이 문제가 해결되지 않았습니다.

 let sendBytes:[UInt8] = [0x0, 0x0, 0x5, 0x0]
 let msgData = Data(bytes: UnsafePointer<UInt8>(sendBytes), count: sendBytes.count)
 socket.write(msgData, withTimeout: -1.0, tag: 0)
 socket.readData(withTimeout: -1.0, tag: 0)
        

"UnsafePointer"에 대해 다음과 같은 경고와 두 가지 제안이 표시됩니다.

'UnsafePointer'를 초기화하면 포인터가 매달려 있습니다.

  1. '[UInt8]'에서 'UnsafePointer'로의 암시 적 인수 변환은 'init (_ :)'에 대한 호출 기간 동안 만 유효한 포인터를 생성합니다.

  2. 인수를 정의 된 범위에 유효한 버퍼 포인터로 명시 적으로 변환하려면 Array에서 'withUnsafeBufferPointer'메서드를 사용합니다.

이것이 내 해결책입니다.

버전 1 :

let sendBytes:[UInt8] = [0x0, 0x0, 0x5, 0x0]
let uint8Pointer = UnsafeMutablePointer<UInt8>.allocate(capacity: sendBytes.count)
uint8Pointer.initialize(from: sendBytes, count: sendBytes.count)
let msgData = Data(bytes: uint8Pointer, count: sendBytes.count)
socket.write(msgData, withTimeout: -1.0, tag: 0)
socket.readData(withTimeout: -1.0, tag: 0)

버전 2 :

let sendBytes:[UInt8] = [0x0, 0x0, 0x5, 0x0]                     
let uint8Pointer = UnsafeMutablePointer<UInt8>.allocate(capacity: sendBytes.count)
uint8Pointer.initialize(from: sendBytes, count: sendBytes.count)
let msgData = Data(bytes: uint8Pointer, count: sendBytes.count)
socket.write(msgData, withTimeout: -1.0, tag: 0)
socket.readData(withTimeout: -1.0, tag: 0)
uint8Pointer.deallocate()
Vadian

Swift 3부터는 배열 Data인스턴스 를 간단히 초기화 할 수 있습니다 UInt8.

let sendBytes:[UInt8] = [0x0, 0x0, 0x5, 0x0]
let msgData = Data(sendBytes)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

CMVideoFormatDescriptionCreateFromH264ParameterSets throw 초기화 'UnsafePointer <Int>'결과 댕글 링 포인터 발생

분류에서Dev

'UnsafeMutableRawPointer'를 초기화하면 댕글 링 포인터가 발생합니다.

분류에서Dev

inout 인수로 변경할 수없는 값을 전달할 수 없습니다. 'UnsafePointer <UInt8>에서 암시 적 변환? 'UnsafePointer <UInt8>?' 임시가 필요하다

분류에서Dev

생성자에서 배열 선언 : 댕글 링 포인터가 발생합니까?

분류에서Dev

데이터를 UnsafePointer <UInt8>로 변환하는 방법?

분류에서Dev

WatchKit을 추가하면 링커 오류가 발생합니다.

분류에서Dev

C ++의 스마트 포인터에 대한 댕글 링 참조

분류에서Dev

명시 적 변환이있는 댕글 링 포인터

분류에서Dev

C ++ 퍼펙트 포워딩 : 댕글 링 참조를 피하는 방법

분류에서Dev

uint8 유형으로 배열을 초기화 할 수 없습니다.

분류에서Dev

'(UInt32, UnsafePointer <Int8>, UInt, [CChar], Int, UnsafeMutablePointer <CUnsignedChar>) 유형의 인수 목록을 사용하여'CCHmac '을 호출 할 수 없습니다.

분류에서Dev

비 Objective-C 포인터 유형 'const UInt8 *'(일명 'const unsigned char *')을 'NSData *'로 캐스트하는 것은 ARC에서 허용되지 않습니다.

분류에서Dev

코더 오류 방지-참조로 임시 값 반환 (댕글 링 포인터)

분류에서Dev

반복기 인스턴스에 대한 댕글 링 참조를 방지하는 방법

분류에서Dev

.html을 제거하면 폴더에 대한 링크가 발생합니다.

분류에서Dev

Flask HTML 양식을 렌더링하면 "UnboundLocalError"가 발생합니다.

분류에서Dev

numpy uint8을 이동하면 왜 음수 값이 생성됩니까?

분류에서Dev

시간을 얻기 위해 boost :: chrono :: system_clock을 사용하면 링커 오류가 발생합니다.

분류에서Dev

gson을 통해 객체를 직렬화 해제하면 null 포인터 예외가 발생합니다.

분류에서Dev

Pandas에서 혼합 dtype 열을 필터링하면 오류가 발생합니다.

분류에서Dev

비동기 작업 중 댕글 링 참조

분류에서Dev

영구 링크 옵션이 Wordpress에서 "포스트 이름"을 설정하면 오류가 발생합니다.

분류에서Dev

래스터 dtype을 uint8에서 float32로 변환하는 방법은 무엇입니까?

분류에서Dev

포인터 초기화가 값을 재정의합니다.

분류에서Dev

Dart는 두 개의 Uint8을 하나의 Uint16으로 변환합니다.

분류에서Dev

for 루프 내부에서 배열을 필터링하면 경고 VueJS가 발생합니다.

분류에서Dev

내 웹 페이지에서 링크드 인 URL을 실행하면 오류가 발생합니다.

분류에서Dev

액터와 함께 거스 주입을 사용하면 널 포인터가 발생합니다.

분류에서Dev

Int를 UnsafePointer <UInt8>로 변환

Related 관련 기사

  1. 1

    CMVideoFormatDescriptionCreateFromH264ParameterSets throw 초기화 'UnsafePointer <Int>'결과 댕글 링 포인터 발생

  2. 2

    'UnsafeMutableRawPointer'를 초기화하면 댕글 링 포인터가 발생합니다.

  3. 3

    inout 인수로 변경할 수없는 값을 전달할 수 없습니다. 'UnsafePointer <UInt8>에서 암시 적 변환? 'UnsafePointer <UInt8>?' 임시가 필요하다

  4. 4

    생성자에서 배열 선언 : 댕글 링 포인터가 발생합니까?

  5. 5

    데이터를 UnsafePointer <UInt8>로 변환하는 방법?

  6. 6

    WatchKit을 추가하면 링커 오류가 발생합니다.

  7. 7

    C ++의 스마트 포인터에 대한 댕글 링 참조

  8. 8

    명시 적 변환이있는 댕글 링 포인터

  9. 9

    C ++ 퍼펙트 포워딩 : 댕글 링 참조를 피하는 방법

  10. 10

    uint8 유형으로 배열을 초기화 할 수 없습니다.

  11. 11

    '(UInt32, UnsafePointer <Int8>, UInt, [CChar], Int, UnsafeMutablePointer <CUnsignedChar>) 유형의 인수 목록을 사용하여'CCHmac '을 호출 할 수 없습니다.

  12. 12

    비 Objective-C 포인터 유형 'const UInt8 *'(일명 'const unsigned char *')을 'NSData *'로 캐스트하는 것은 ARC에서 허용되지 않습니다.

  13. 13

    코더 오류 방지-참조로 임시 값 반환 (댕글 링 포인터)

  14. 14

    반복기 인스턴스에 대한 댕글 링 참조를 방지하는 방법

  15. 15

    .html을 제거하면 폴더에 대한 링크가 발생합니다.

  16. 16

    Flask HTML 양식을 렌더링하면 "UnboundLocalError"가 발생합니다.

  17. 17

    numpy uint8을 이동하면 왜 음수 값이 생성됩니까?

  18. 18

    시간을 얻기 위해 boost :: chrono :: system_clock을 사용하면 링커 오류가 발생합니다.

  19. 19

    gson을 통해 객체를 직렬화 해제하면 null 포인터 예외가 발생합니다.

  20. 20

    Pandas에서 혼합 dtype 열을 필터링하면 오류가 발생합니다.

  21. 21

    비동기 작업 중 댕글 링 참조

  22. 22

    영구 링크 옵션이 Wordpress에서 "포스트 이름"을 설정하면 오류가 발생합니다.

  23. 23

    래스터 dtype을 uint8에서 float32로 변환하는 방법은 무엇입니까?

  24. 24

    포인터 초기화가 값을 재정의합니다.

  25. 25

    Dart는 두 개의 Uint8을 하나의 Uint16으로 변환합니다.

  26. 26

    for 루프 내부에서 배열을 필터링하면 경고 VueJS가 발생합니다.

  27. 27

    내 웹 페이지에서 링크드 인 URL을 실행하면 오류가 발생합니다.

  28. 28

    액터와 함께 거스 주입을 사용하면 널 포인터가 발생합니다.

  29. 29

    Int를 UnsafePointer <UInt8>로 변환

뜨겁다태그

보관