:NSMutableArray에 NSObject 사용자 정의 하위 클래스에 포인터를 추가하는 방법은 무엇입니까? ViewController.m에서 다음 코드를 들어
CustomButton가있는 UIButton의 서브 클래스를 입력 NSObject의의 객체에 대한 포인터입니다 @property (비 원자 강한) associatedObject을 가지고 •- (IBAction)buttonAction:(id)sender
{
CustomButton *button = (CustomButton *)sender;
button.associatedObject = [self.sourceOfObjects.objectArray lastObject];
[self.foo.arrayOfObjects addObject:button.associatedObject]; // this does not work?
}
.
• sourceOfObjects는 NSObject의 하위 클래스 인 MyCustomObject 유형의 자질 (비 원자력, 강함)입니다.
• objectArray는 NSMutableArray 유형의 sourceOfObjects의 @property (비 원자력, 강함)입니다.
• foo는 NSObject의 하위 클래스 인 MyCustomObject 유형의 ViewController의 @ 속성 (비 원자력, 강함)입니다.
• arrayOfObjects는 NSMutableArray 유형의 foo의 @property (비 원자력, 강함)입니다.
질문 : 왜 button.associatedObject에서 동일한 객체를 가리키는 self.foo.arrayOfObjects에 포인터가 있도록 button.associatedObject에서 포인터를 self.foo.arrayOfObjects에 추가 할 수 없습니까?
내가 예상 한 것 : [self.foo.arrayOfObjects lastObject]를 요청하면 button.associatedObject도 가리키는 객체를 반환해야합니다.
실제로 일어난 일 : 이후 self.foo.arrayOfObjects.count를 요청하면 0이 반환됩니다. lazy instantiation을 제자리에두고 있기 때문에 arrayOfObjects를 초기화 할 때 문제가 있다고 생각하지 않습니다.
이 질문을 정확하게 표현하고 정확하도록 노력하겠습니다. :)
"작동하지 않음"이란 정확히 무엇을 의미합니까? (1) 일어날 것으로 예상되는 것과 (2) 실제로 일어난 것을 설명하십시오. –
수정 됨, 감사합니다. –
NSLog (@ "sourceOfObjects : % @", self.sourceOfObjects.objectArray);'메소드의 시작 부분에 'NSLog (@ "foo : % @", self.foo.arrayOfObjects) 그것이 제로가 아닌지 확인하십시오. "초기화에 문제가 있다는 것을 믿지 않으므로"이 작업이 제대로 수행되어야하므로 확신 할 수없는 이유는 무엇입니까? :) – lnafziger