내가 이렇게 같은 블록이 있다고? 이 블록은 다른 객체에 대해 작동하며 객체가 nil 인 경우 할당해야합니다. 이 상태에서 일부 개체는 범위에 할당됩니다 (따라서 obj
이 할당되지만 someObject
은 할당되지 않음). ive는 __block
를 사용하여 시도했지만, 그게 뭔지는 생각하지 않습니다. 샘플에 대한블록에 매개 변수 개체에 새로운 객체를 할당
답변
ㅁWh 그것은 매개 변수가되고 블록은 함수처럼 작동합니다. 여기에서하는 일은 Apple의 API에서 NSErrors를 처리하는 방법과 유사합니다.
이 시도 :
Object * someObject = nil;
block = ^(Object **obj){
if(obj != nil && *obj == nil)
*obj = [[Object alloc] init];
};
block(&someObject); //someObject is still nil
block(&someObject); //it will assign again, instead of not
NSLog(@"result: %@", someObject);
-이 유사 헤더 또는 뭔가 typdef 선언이 좋아 다음
typedef void (^ActionBlock)(NSArray **array);
및 사용 :
__block NSArray *array = nil;
NSLog(@"Before: %@",array);
ActionBlock block = ^(NSArray **array)
{
if(*array == nil)
*array = [[NSArray alloc] init];
};
block(&array);
NSLog(@"After: %@",array);
출력 :
2013-04-05 21:05:23.153 TestingSuite[62813:c07] Before: (null)
2013-04-05 21:05:23.155 TestingSuite[62813:c07] After: (
)
희망을 도움이
하지만 아무 소용이 ... 어쩌면 나는를 작성합니다 – Fonix
하지만 뭔가 빠진 메신저 샘플 - 내놔 –
또한이 방법 갈 수 : 그 시도
__block Object someObject = nil;
block = ^(void)
{
if(someObject == nil)
someObject = [[Object alloc] init];
}
block();
, 이럴 수는 없습니다. 이 블록은 여러 장소에 존재하고 객체는 블록이 실행되는 컨텍스트에서 오지 않기 때문에 – Fonix
- 1. C# 클래스 개체에 추가 매개 변수 할당
- 2. 개체에 문자열 매개 변수 추가
- 3. Backbone.js의 창 개체에 변수 할당
- 4. R 새로운 변수 할당
- 5. SQLAlchemy : 개체에 매개 변수 전달
- 6. 명시 적 루비 블록에 매개 변수 전달
- 7. 블록에 매개 변수 배열을 동적으로 적용하기
- 8. 생성자의 배열 매개 변수 할당
- 9. 옥에있는 블록에 변수 값 지정
- 10. 너무 많은 매개 변수 :: 새로운
- 11. HTML.ActinLink는 객체를 전달합니다. 매개 변수
- 12. MVC 개체에 대한 매개 변수 바인딩
- 13. NancyFX 게시 - 목록으로 개체에 바인딩 매개 변수
- 14. 요청 개체에 새 매개 변수 추가
- 15. Perl 평가에서 변수 할당 할당
- 16. 레일에 매개 변수 객체를 놓을 장소
- 17. 개체에 메모리 할당 C#
- 18. 개체에 값 할당 #?
- 19. 동적 변수 개수가있는 매개 변수 객체를 여러 매개 변수로 변환
- 20. 두 블록에 걸쳐 변수 사용
- 21. 이클립스 단축키는 기존 객체에 새로운 객체를 할당합니다.
- 22. 새로운 개체에 linq
- 23. CUDA에서 공유 변수 할당
- 24. Netlogo : 목록 목록에서 매개 변수 값 할당
- 25. 튜플 매개 변수 선언과 할당 이상한
- 26. 변수를 사용하여 함수 매개 변수 할당?
- 27. TSQL 상위 1 매개 변수 할당 문제
- 28. mysql의 out 매개 변수에 변수 값 할당
- 29. 포장 할당 된 출력 매개 변수
- 30. 기본값으로 할당 된 매개 변수 (= 기본값)는?
아아 버거,이 작동하지 않으며 대답이지만, 어쨌든, 당신은 변수가 어쨌든 헤더를 정의 할 수있는 변수를 사용하는 것처럼 보일 수 있습니다. 백엔드를위한 __autoreleasing 매개 변수에 로컬 객체 ' – Fonix
다른 방법은 __block 변수를 사용하고 다른 변수에 의해 제안 된 것처럼 매개 변수로 사용하지 않는 것입니다. 나는 중간에 방법이 있다고 생각하지 않습니다. – svena
빌어 먹을,이 블록을 객체 + 일부 다른 설정 코드에서 처리하기 위해이 블록을 전달하기를 원했기 때문에 someObject가 어디에서 달라지기 때문에 로컬 변수로 사용할 수 없습니다 ... 오, 잘 아프지 만 다른 방법을 찾아야합니다. – Fonix