코드 블록의 지역 변수, __block 접두사 및 Objective-C의 정적 전역 변수
巴扎黑
巴扎黑 2017-04-24 09:13:55
0
1
584

코드는 다음과 같습니다.
typedef void (^fun) (더블 a, 더블 b);
더블 c = 3;
재미있는 곱셈 = ^(double a, double b) { c = a * b };
곱하기(4, 5);
printf("c = %fn", c);

여기서는 typedef를 사용하는데, 문제는 곱셈을 정의할 때 변수 c를 함께 선언하고, c를 상수로 사용하므로 c = a * b 연산을 수행할 수 없다는 점입니다. c를 수정하려는 경우 한 가지 방법은 __block 접두사를 추가하는 것입니다. 즉, __block double c = 3; 또 다른 방법은 c를 정적 전역 변수로 선언하는 것입니다. 예: static double c = 3;

두 접근 방식 모두 합리적인가요? 답변 부탁드립니다 :)

巴扎黑
巴扎黑

모든 응답(1)
PHPzhong

__block을 사용하는 방법도 가능하지만, static은 다음과 같이 작성해야 합니다.

으아악

이 문제의 본질을 이해하려면 "Objective-C 고급 프로그래밍 iOS 및 OS X 멀티스레딩 및 메모리 관리" 책을 읽어보는 것이 좋습니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿