为什么我的CGRect没有按照应有的方式行事?

时间:2014-11-11 05:37:04

标签: ios objective-c xcode cgrect

我正在制作一个简单的应用程序,遵循The Big Nerd Ranch iOS书。

我从CGRect得到了这个特殊的回应,无论输入什么值,它都不会离开模拟器的原点。

我创建了一个名为HypnosisView的简单UIView类,它没有任何代码。

以下是我在AppDelegate中使用的代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    CGRect firstFrame = CGRectMake(160, 240, 100, 150);

    HypnosisView *firstView = [[HypnosisView alloc] initWithFrame:firstFrame];
    firstView.backgroundColor = [UIColor redColor];

    [self.window addSubview:firstView];

    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];

    return YES;
}

以下是创建的内容: CGRect not responding

我希望这是Xcode 6的另一个怪癖而不是我犯过的一些愚蠢的错误,但是我已经看了好几个小时了,而且我厌倦了它。

编辑:我想我发现了我的问题,但它提出了一个侧面问题。

#import <UIKit/UIKit.h>

@interface HypnosisView : UIView

@property (nonatomic) CGRect frame;

@end

这是我的HypnosisView.h文件和超类中的代码显然拥有它自己的 initWithFrame 版本。

如果你没有覆盖超类的功能,他们可以偶然调用你的实例变量吗?

例如,这里我们有示例函数:

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
}

自我最终会等于实例变量&#34; frame&#34;?即使我从未调用 initWithFrame 函数,所以超级版本应该超出范围?

0 个答案:

没有答案