Не удается получить объекты-члены в TTPostController: метод postController - PullRequest
0 голосов
/ 23 мая 2011

Невозможно получить объекты-члены в TTPostController: метод postController

Я пытался выяснить, почему я не могу вернуть ни один из моих объектов-членов при использовании метода TTPostController: postController для отправки HTTP-запроса.Вот код, который я использую.

Заголовок:

@interface NewReplyViewController : TTPostController <TTPostControllerDelegate> {
    NSString * _thread_id;
}

@property (nonatomic, assign) NSString * thread_id;

-(id)initWithThreadId:(NSString *)threadId;

@end

Реализация:

@synthesize thread_id = _thread_id;

-(id)initWithThreadId:(NSString *)threadId {
    self = [super initWithNibName:nil bundle:nil];

    if (self) {
        self.delegate  = self;
        self.thread_id = threadId;
        self.title     = kPostReplyPhrase;

        self.navigationItem.rightBarButtonItem.title = kPostPhrase;
    }

    return self;
}

- (void)postController:(TTPostController *)postController 
           didPostText:(NSString *)text 
            withResult:(id)result {

    NSLog(@"postController:postController self.threadid = %@", self.thread_id);
}

Как только я добираюсь до части NSLog, где он пытается вернуть объектыИдентификатор потока после нажатия кнопки отправки, приложение вылетает без особой детализации.Трассировка стека показывает мой объект _thread_id, но я не могу понять, почему я не могу добраться до него.Любые идеи о том, что я могу делать неправильно?

Вот некоторые подробности о сбое и трассировке стека:
http://i.stack.imgur.com/NL2tD.png

Thread 1, Queue : com.apple.main-thread
    #0  0x01058657 in ___forwarding___ ()
#1  0x01058522 in __forwarding_prep_0___ ()
#2  0x00a99fcb in _NSDescriptionWithLocaleFunc ()
#3  0x010d0c1d in __CFStringAppendFormatCore ()
#4  0x01018507 in _CFStringCreateWithFormatAndArgumentsAux ()
#5  0x010a01ee in _CFLogvEx ()
#6  0x00b179a4 in NSLogv ()
#7  0x00b17913 in NSLog ()
#8  0x0000a7a0 in -[NewReplyViewController postController:didPostText:withResult:] at /Users/Ken/iOS/Forums/NewReplyViewController.m:59
#9  0x00048b8f in -[TTPostController dismissAnimationDidStop] ()
#10 0x00369fb9 in -[UIViewAnimationState sendDelegateAnimationDidStop:finished:] ()
#11 0x00369e4b in -[UIViewAnimationState animationDidStop:finished:] ()
#12 0x0027999b in run_animation_callbacks(double, void*) ()
#13 0x0021e651 in CA::timer_callback(__CFRunLoopTimer*, void*) ()
#14 0x010c88c3 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ ()
#15 0x010c9e74 in __CFRunLoopDoTimer ()
#16 0x010262c9 in __CFRunLoopRun ()
#17 0x01025840 in CFRunLoopRunSpecific ()
#18 0x01025761 in CFRunLoopRunInMode ()
#19 0x01c2e1c4 in GSEventRunModal ()
#20 0x01c2e289 in GSEventRun ()
#21 0x00347c93 in UIApplicationMain ()
#22 0x00001fa9 in main ()

1 Ответ

0 голосов
/ 23 мая 2011

Для NSString @property всегда используйте copy:

@property (nonatomic, copy) NSString * thread_id;

AFAIK, есть только две ситуации, когда вы можете использовать @property (assign):

  • Для литеральных типов (т.е. необъектных), например: int, float, NSUInteger, CGPoint и т. Д.
  • Когда вы хотите иметь слабую ссылку на объект, который переживет объект класса, наиболее распространенными примерами являются контроллер делегата и представления: @property (nonatomic, assign) UIViewController *viewController

p / s: слабая ссылка предотвращает циклическую зависимость, например: контроллер сохраняет представление, затем представление сохраняет контроллер, поэтому в итоге оба не могут быть освобождены

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...