私がGoogleを検索したことを最初に言わせてください。多くの人が同様の問題を抱えていますが、次のような奇妙な振る舞いと救済策については何も見ていません。
UIViewControllerを作成し、いくつかのIBOutletsにペン先を関連付けました。別のクラスからこのペン先を消費しようとしたところ、initWithNibName:bundle:でインスタンス化した後、IBOutletsがまだnilであることがわかりました。
私はそれらが正しく配線されていることを確認しました、そしてはい、それらは合成されていますが、それでも何もありません。さらに調査しているときに、initWithNibNameメソッドを次のように変更しました。
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
UIView *view = self.view;
NSArray *subviews = self.view.subviews;
NSLog(@"Loaded view containing %d subviews.", [subviews count]);
}
return self;
}
信じられないことに、ここに3行を追加すると、使い捨て変数とロギングが作成され、IBOutletsが適切に接続され、外部から機能するようになります。
マシンをクリーンアップして再構築して再起動しましたが、それでもこれらの行を削除すると、動作を停止します。私はここで本当に困惑していて、出荷した瞬間に壊れてしまうようなブードゥーが機能しているのではないかと心配しています。何が起こっているのかについてのアイデアはありますか?