Я пытаюсь использовать iOS StackPanel, найденный here в моем собственном проекте.Невозможно присвоить значение переменной в Objective-C для iOS
Я включил файлы Stackpanel. * В свой проект и протестировал функциональность, я скопировал демо-код, который включен в файл AppDelegate исходного проекта в мой проект, как действие для нажатия кнопки. Проблема в том, что я не могу установить значение self.stackPanel (или использовать [self setStackPanel :). В любом случае, значение self.stackPanel остается ноль.
Соответствующие разделы кода ниже:
// From StackPanelAppDelegate.h (copied to MyViewController.h)
#import "StackPanel.h"
@interface MyNavViewController : UIViewController <UITextFieldDelegate>
{
StackPanel *stackPanel;
}
@property(strong, nonatomic) IBOutlet StackPanel *stackPanel;
@end
// From StackPanelAppDelegate.m (copied to MyViewController.m)
#import "StackPanel.h"
@implementation MyNavViewController
@synthesize stackPanel;
-(IBAction)myButtonPress:(id)sender
{
// Doesn't set correctly
self.stackPanel = [[StackPanel alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
...
// More code that adds things to the StackPanel
}
Я знаю, что Alloc и initWithFrame: методы работают правильно, потому что я создал еще один StackPanel * и может установить его значение на результат initWithFrame :. Другими словами,
-(IBAction)myButtonPress:(id)sender
{
// This works
StackPanel* panel = [[StackPanel alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
...
// More code that adds things to the StackPanel
}
Я пропустил что-то основное здесь, что не позволит мне установить значение свойства stackPanel?
Единственное, что у меня есть, это то, что исходный код не использует ARC, но мой проект делает, поэтому я удалил все операторы release
и retain
, чтобы сохранить компилятор счастливым. Я довольно новичок в ARC, но могут ли эти изменения повлиять?
Вы абсолютно уверены, что '-myButtonPress:' в оригинале называется? Установите точку останова, чтобы убедиться. – JeremyP
Вместо удаления сохранения/освобождения добавьте '-fno-objc-arc' в' Targets => Build Phases => Compile Sources => StackPanel.m', чтобы исключить этот класс из ARC, затем повторите попытку. –
Еще одно примечание: не должна ли высота кадра быть 460 вместо 480 (из-за строки состояния)? –